python日志记录错误栈traceback
原创
©著作权归作者所有:来自51CTO博客作者小龙在山东的原创作品,请联系作者获取转载授权,否则将追究法律责任
logging
模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点:
- 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;
-
print
将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出;
标准输出
import sys
import traceback
import logging
def func(a, b):
return a / b
if __name__ == '__main__':
try:
func(1, 0)
except Exception as e:
logging.exception(e) # 方式一
traceback.print_exc(file=sys.stdout) # 方式二
写入日志文件
import time
import logging
def log(e):
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.WARNING)
handler = logging.FileHandler('log/log-%s.txt' % time.strftime('%Y-%m-%d'))
handler.setLevel(logging.WARNING)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.exception(msg=e)
from browser.webchat_ui2 import WebchatUi2
try:
1/0
except Exception as e:
log(e)
参考
https://docs.python.org/3/library/logging.html