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编程中的异常处理教程
Aug 21 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
python如何调用java类
Jul 05 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
python抢购软件/插件/脚本附完整源码
Mar 04 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 实现类似js中alert() 提示框
2015/03/18 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php查询及多条件查询
2017/02/26 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
Python实现简单HTML表格解析的方法
2015/06/15 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python用户管理系统的实例讲解
2017/12/23 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
带你认识Django
2019/01/15 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
师生聚会感言
2014/01/26 职场文书
店长职务说明书
2014/02/04 职场文书
班级活动总结格式
2014/08/30 职场文书
平面设计师岗位职责
2014/09/18 职场文书
工程部主管岗位职责
2015/02/12 职场文书
永远是春天观后感
2015/06/12 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
Redis 异步机制
2022/05/15 Redis