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文件操作整理汇总
Oct 21 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
python查看数据类型的方法
Oct 12 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
python如何使用代码运行助手
Jul 03 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
pytorch中[..., 0]的用法说明
May 20 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
提高网站信任度的技巧
2008/10/17 Javascript
js form action动态修改方法
2008/11/04 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python设计模式之观察者模式实例
2014/04/26 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
django-allauth入门学习和使用详解
2019/07/03 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
用Python 执行cmd命令
2020/12/18 Python
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
中职生自荐信范文
2014/06/15 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
redis复制有可能碰到的问题汇总
2022/04/03 Redis