先记录一下,后面学习的时候再补充。
参考这篇文章:
(转):https://www.cnblogs.com/xianyulouie/p/11041777.html
一般在代码中都会有异常捕获和日志记录,两者互相配合。当然日志除了记录异常也可以记录执行情况,用途更多。
日志需要引用logging模块,日志信息有级别之分,如果设定了日志级别,则在该级别下的信息不会被记录,如下:
级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
debug : 打印全部的日志,详细的信息,通常只出现在诊断问题上
info : 打印info,warning,error,critical级别的日志,确认一切按预期运行
warning : 打印warning,error,critical级别的日志,一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”),这个软件还能按预期工作
error : 打印error,critical级别的日志,更严重的问题,软件没能执行一些功能
critical : 打印critical级别,一个严重的错误,这表明程序本身可能无法继续运行
使用方式如下:
1.简单使用,直接在try except中使用,可以发现异常时记录。
import logging
#直接当print()使用,区别是logging一般是红色字体,且出现位置不定
logging.debug("测试打印")
#日志的基本设置,一般简单使用都不需要设
logging.basicConfig(level=logging.DEBUG, #设置日志级别
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #设置日志格式,依次是时间,文件名,问题行号,日志级别,具体信息
datefmt='%a, %d %b %Y %H:%M:%S', #设置日期格式
filename='test.log', #设置日志文件名
filemode='w') #设置日志权限
#异常捕获
#try except else finally
#如果要更详细还可以引用 import traceback ,然后在except里加 print(traceback.format_exc())
#可以自由组合使用
try: #第一步尝试
print(0/0)
except Exception as e: #第二步如果有异常尝试
print('有错误 ',e)
#print(traceback.format_exc())显示在代码行的错误
logging.debug(e)#日志一般用在这里
except IOError as f: #第二步分的细一些,还可以再自定错误类型再记录
print('IO有错误 ',f)
else: #第二步没有异常尝试
print(1)
finally: #第三步尝试
print(2)
2.复杂一点使用,就是定义一个log文件,然后创建一个handle往里写日志。
import os.path
import time
import logging
# 创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.INFO) # Log等级总开关
# 创建一个handler,用于写入日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
log_path = os.path.dirname(os.getcwd()) + '/Logs/'#获取当前目录的上级目录加/logs/
log_name = log_path + rq + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')#创建一个日志处理工具
fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关
# 定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
logger.addHandler(fh)
# 使用logger.XX来记录错误,这里的"error"可以根据所需要的级别进行修改
try:
open('/path/to/does/not/exist', 'rb')
except (SystemExit, KeyboardInterrupt):
raise
except Exception, e:
logger.error('Failed to open file', exc_info=True)