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中readline判断文件读取结束的方法
Nov 08 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
python单元测试unittest实例详解
May 11 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
Linux下python3.7.0安装教程
Jul 30 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
Python3 A*寻路算法实现方式
Dec 24 Python
详解python中各种文件打开模式
Jan 19 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python猜数字算法题详解
2020/03/01 Python
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
社会实践自我鉴定
2013/11/07 职场文书
自主招生自荐信
2013/12/08 职场文书
学习决心书范文
2014/03/11 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
报案材料怎么写
2015/05/25 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技