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 socket C/S结构的聊天室应用实现
Nov 30 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
关于numpy中np.nonzero()函数用法的详解
Feb 07 Python
numpy数组拼接简单示例
Dec 15 Python
python如何修改装饰器中参数
Mar 20 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
查看端口并杀进程python脚本代码
Dec 17 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python中过滤字符串列表的方法
Dec 22 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 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自定义函数收代码
2010/08/01 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
旅游业大学生创业计划书
2014/01/31 职场文书
迎国庆横幅标语
2014/10/08 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python