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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
python爬取微信公众号文章的方法
Feb 26 Python
python实现银联支付和支付宝支付接入
May 07 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
解决Django连接db遇到的问题
Aug 29 Python
python制作英语翻译小工具代码实例
Sep 09 Python
用Python解数独的方法示例
Oct 24 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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
YII使用url组件美化管理的方法
2015/12/28 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
javascript常用的方法整理
2015/08/20 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
Python中unittest用法实例
2014/09/25 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
二年级体育教学反思
2014/01/15 职场文书
九年级科学教学反思
2014/01/29 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
给校长的建议书
2014/03/12 职场文书
党支部三会一课计划
2014/09/24 职场文书
学习保证书
2015/01/17 职场文书
售后服务质量承诺书
2015/04/29 职场文书
党员转正大会主持词
2015/07/02 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python