1.捕获异常并写入日志
import logging obj = logging.basicConfig( # 这里用basicConfig是配置,如果要打印到多个文件中是不行的,必须自定义 filename='1x.txt', # 要写入的文件名,这里如果没设置写入模式会默认追加a模式,要设置模式可以用filemode= format = '%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s %(pathname)s ', datefmt='%Y-%m-%d %H:%M:%S', # 时间格式化 level=logging.DEBUG, # 设置写入的日志级别,不设置会默认到warning # 日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG ) import traceback def func(): try: a=a+1 except Exception as e: # 获取当前错误的堆栈信息 mg = traceback.format_exc() logging.error(mg) func()
2.这里format中的一些格式化:
asctime 时间,有默认的格式
name 操作的用户名
levename 日志的级名
module 所在模块名
message 日志等级的标志
level 定义级数
pathname 打印当前执行程序的路径
lineno 打印日志的当前函数
3.日志写入多个文件的时候
import logging file_handle = logging.FileHandler('1x.txt',encoding='UTF-8') # 设置写入的文件名 log_fmt = logging.Formatter(fmt='%(asctime)s %(name)s %(levelname)s %(module)s : %(message)s ') # 设置写入格式 file_handle.setFormatter(log_fmt) loggin1 = logging.Logger(name='x1',level=logging.ERROR) loggin1.addHandler(file_handle) loggin1.error('12314') file_handle2 = logging.FileHandler('2x.txt',encoding='UTF-8') # 设置写入的文件名 log_fmt2 = logging.Formatter(fmt='%(asctime)s %(name)s %(levelname)s %(module)s : %(message)s ') # 设置写入格式 file_handle2.setFormatter(log_fmt) loggin2 = logging.Logger(name='x1',level=logging.ERROR) loggin2.addHandler(file_handle) loggin2.error('12314')