Python打印详细报错日志logging问题
作者:南湖渔歌
这篇文章主要介绍了Python打印详细报错日志logging问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Python打印详细报错日志logging
方式1
logging模块可以实现Python程序的错误日志功能。
通过使用baseConfig()函数就可以对logging进行一个日志配置。
包括输出的格式和错误等级,记录的文件目录
# 日志模块 import logging import traceback # 引入日志 logging.basicConfig(filename='log_record.txt', level=logging.DEBUG, filemode='w', format='[%(asctime)s] [%(levelname)s] >>> %(message)s', datefmt='%Y-%m-%d %I:%M:%S') try: print(a+1) # 放主要代码 except Exception as e: logging.error("Main program error:") logging.error(e) logging.error(traceback.format_exc())
方式2
在程序中完成logger,handler,filter,formater的实例化 被配置好logging,然后再使用logging取得logger进行日志操作
import logging # logging模块由logger,handler,filter,fomatter四个部分组成 # 获取一个logger对象 logger = logging.getLogger("haha") # 设置日志输出等级 logger.setLevel(logging.DEBUG) # 创建一个文件的handler f_handler = logging.FileHandler("xxx.log") f_handler.setLevel(logging.INFO) # 创建一个控制台的handler c_handler = logging.StreamHandler() c_handler.setLevel(logging.WARNING) # 设置日志的输出格式 fmt = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s") # 给handler绑定一个fomatter类 f_handler.setFormatter(fmt) c_handler.setFormatter(fmt) # 绑定一个handler logger.addHandler(f_handler) logger.addHandler(c_handler) # 使用logger输出日志信息 logger.debug("debug") logger.info("info") logger.warning("warning") logger.error("error") logger.critical("critiacl")
python在日志中记录异常
1、在日志中记录异常
import logging # logging默认值打印warning以上级别的信息 logging.debug('这是debug级别的信息!') logging.info('这是info级别的信息!') logging.warning('这是warning级别的信息!') logging.error('这是error级别的信息!') logging.critical('这是critical级别的信息!') # 输出: # WARNING:root:这是warning级别的信息! root:用户权限 # ERROR:root:这是error级别的信息! # CRITICAL:root:这是critical级别的信息!
2、把日志写到文件里
import logging # logging默认值打印warning以上级别的信息 logging.basicConfig(level='DEBUG',filename='./log20210130.log',filemode='a+') logging.debug('这是debug级别的信息!') logging.info('这是info级别的信息!') logging.warning('这是warning级别的信息!') logging.error('这是error级别的信息!') logging.critical('这是critical级别的信息!')
3、结合实际打印异常日志到文件
import time import logging # logging默认值打印warning以上级别的信息 import traceback # 将原始报错的信息返回出来 logging.basicConfig(level='DEBUG',filename='./log20210130.log',filemode='a+') try: input = int(input('请输入一个整数:')) print(1/input) except: # 会捕获所有的异常 # 返回时间和原始报错信息 logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc() + '-------------- \n')
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。