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中的cookielib模拟登录网站
Apr 09 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
python实现求最长回文子串长度
Jan 22 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python使用scrapy发送post请求的坑
Sep 04 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
Python 中判断列表是否为空的方法
Nov 24 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python算的上脚本语言吗
Jun 22 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
python3实现飞机大战
Nov 29 Python
python 监控服务器是否有人远程登录(详细思路+代码)
Dec 18 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP5函数小全(分享)
2013/06/06 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
PHP如何防止用户重复提交表单
2020/12/09 PHP
jquery 问答知识整理
2010/02/11 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
详解Python 解压缩文件
2019/04/09 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
django 多数据库及分库实现方式
2020/04/01 Python
简约控的天堂:The Undone
2016/12/21 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
国际语言毕业生求职信
2014/07/08 职场文书
幼儿学前班评语
2014/12/29 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
python画条形图的具体代码
2022/04/20 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers