Python中使用logging和traceback模块记录日志和跟踪异常


Posted in Python onApril 09, 2019

logging模块

logging模块用于输出运行日志,可以设置不同的日志等级,保存信息到日志文件中等。 相比print,logging可以设置日志的等级,控制在发布版本中的输出内容,并且可以指定日志的输出格式。

1. 使用logging在终端输出日志

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import logging # 引入logging模块
# 设置打印日志级别 CRITICAL > ERROR > WARNING > INFO > DEBUG
logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s
 -%(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s')
# 将信息打印到控制台上
logging.debug(u"调试")
logging.info(u"执行打印功能")
logging.warning(u"警告")
logging.error(u"错误")
logging.critical(u"致命错误")

输出

Python中使用logging和traceback模块记录日志和跟踪异常

2. 使用logging在?端?出日志,?K保存日志到本地log文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import logging # 引入logging模块
import os.path
# 第一步,创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # Log等级开关
# 第二步,创建一个handler,用于写入日志文件
log_path = os.path.dirname(os.getcwd()) + '/Logs/'
log_name = log_path + 'log.log'
logfile = log_name
file_handler = logging.FileHandler(logfile, mode='a+')
file_handler.setLevel(logging.ERROR) # 输出到file的log等级的开关
# 第三步,定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
file_handler.setFormatter(formatter)
# 第四步,将handler添加到logger里面
logger.addHandler(file_handler)
# 如果需要同?r需要在?端上?出,定?一??streamHandler
print_handler = logging.StreamHandler() # 往屏幕上输出
print_handler.setFormatter(formatter) # 设置屏幕上显示的格式
logger.addHandler(print_handler)
# 日志信息
logger.debug('this is a logger debug message')
logger.info('this is a logger info message')
logger.warning('this is a logger warning message')
logger.error('this is a logger error message')
logger.critical('this is a logger critical message')
# 或使用logging
logging.debug('this is a logger debug message')
logging.info('this is a logger info message')
logging.warning('this is a logger warning message')
logging.error('this is a logger error message')
logging.critical('this is a logger critical message')

日志等级划分

  • FATAL:致命错误
  • CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用
  • ERROR:发生错误时,如IO操作失败或者连接问题
  • WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误
  • INFO:处理请求或者状态变化等日常事务
  • DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态

traceback模块

traceback是python中用来跟踪异常信息的模块,方便把程序中的运行异常打印或者保存下来做异常分析。

常见用法

try:
  doSomething()
except:
  traceback.print_exc()
  # logging.error(str(traceback.format_exc()))

traceback.format_exc() 与 traceback.print_exc() 区别:

  1.    traceback.format_exc() 返回异常信息的字符串,可以用来把信息记录到log里;
  2.    traceback.print_exc() 直接把异常信息在终端打印出来;

traceback.print_exc()也可以实现把异常信息写入文件,使用方法:

traceback.print_exc(file=open('traceback_INFO.txt','w+'))

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
下载安装setuptool和pip linux安装pip    
Jan 24 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
python生成ppt的方法
Jun 07 Python
Python错误处理操作示例
Jul 18 Python
python语言基本语句用法总结
Jun 11 Python
python openpyxl使用方法详解
Jul 18 Python
使用pip安装python库的多种方式
Jul 31 Python
numpy.array 操作使用简单总结
Nov 08 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
由Python编写的MySQL管理工具代码实例
Apr 09 #Python
python实现爬山算法的思路详解
Apr 09 #Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 #Python
Python爬取数据保存为Json格式的代码示例
Apr 09 #Python
python实现QQ空间自动点赞功能
Apr 09 #Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 #Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 #Python
You might like
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
清除输入框内的空格
2016/12/21 Javascript
JS实现留言板功能
2017/06/17 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
Python使用wxPython实现计算器
2018/01/30 Python
用python写测试数据文件过程解析
2019/09/25 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
python反扒机制的5种解决方法
2021/02/06 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
六查六看自查材料
2014/02/17 职场文书
金融管理应届生求职信
2014/02/20 职场文书
英语专业求职信
2014/07/08 职场文书
建筑结构施工求职信
2014/07/11 职场文书
财务会计岗位职责
2015/02/03 职场文书
教师学期末个人总结
2015/02/13 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
Python如何让字典保持有序排列
2022/04/29 Python