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不规范的日期字符串处理类
Jun 10 Python
Python列表计数及插入实例
Dec 17 Python
Python封装shell命令实例分析
May 05 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
python生成九宫格图片
Nov 19 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
Python hashlib模块的使用示例
Oct 09 Python
Python制作表白爱心合集
Jan 22 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脚本的10个技巧(2)
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
python多进程控制学习小结
2018/10/31 Python
python读取图片任意范围区域
2019/01/23 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
甜品店创业计划书
2014/08/14 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
大学生年度个人总结
2015/02/15 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python