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 相关文章推荐
Python json模块使用实例
Apr 11 Python
Python 打印中文字符的三种方法
Aug 14 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
python解释器spython使用及原理解析
Aug 24 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
Python列表list常用内建函数实例小结
Oct 22 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
Python超详细分步解析随机漫步
Mar 17 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
php md5下16位和32位的实现代码
2008/04/09 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
python的类方法和静态方法
2014/12/13 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
python随机数分布random均匀分布实例
2019/11/27 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
Python短信轰炸的代码
2020/03/25 Python
Python中Selenium模块的使用详解
2020/10/09 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
如何进行Linux分区优化
2013/02/12 面试题
酒店前台接待岗位职责
2013/12/03 职场文书
家长对孩子的感言
2014/03/10 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书