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建立网络客户端
Jun 09 Python
python实现进程间通信简单实例
Jul 23 Python
python中requests模块的使用方法
Apr 08 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python分支语句与循环语句应用实例分析
May 07 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
python实现画图工具
Aug 27 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
opencv读取视频并保存图像的方法
Jun 04 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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与MySQL开发的8个技巧小结
2010/12/17 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
详解Vite的新体验
2021/02/22 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
用Python逐行分析文件方法
2019/01/28 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Python Collatz序列实现过程解析
2019/10/12 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
毕业生求职推荐信
2013/11/04 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
数学教研活动总结
2014/07/02 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
如何用python反转图片,视频
2021/04/24 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电
python三子棋游戏
2022/05/04 Python
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL