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的Django框架中Manager方法的使用
Jul 21 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
pymysql 开启调试模式的实现
Sep 24 Python
Python中base64与xml取值结合问题
Dec 22 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 Python
python实现求纯色彩图像的边框
Apr 08 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
一个分页的论坛
2006/10/09 PHP
php实现的xml操作类
2016/01/15 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
js实现一键复制功能
2017/03/16 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
JointJS流程图的绘制方法
2018/12/03 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书