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抓取京东图书评论数据
Aug 31 Python
Hadoop中的Python框架的使用指南
Apr 22 Python
Python模拟百度登录实例详解
Jan 20 Python
详解Golang 与python中的字符串反转
Jul 21 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
python中requests和https使用简单示例
Jan 18 Python
python批量替换页眉页脚实例代码
Jan 22 Python
python创建文件备份的脚本
Sep 11 Python
一百多行python代码实现抢票助手
Sep 25 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
python实现大文本文件分割成多个小文件
Apr 20 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下通过file_get_contents的代理使用方法
2011/02/16 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
js模拟微博发布消息
2017/02/23 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
python实现倒计时的示例
2014/02/14 Python
Python实现将xml导入至excel
2015/11/20 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
开源Web应用框架Django图文教程
2017/03/09 Python
python脚本实现验证码识别
2018/06/07 Python
python实现任意位置文件分割的实例
2018/12/14 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
python实现银行账户系统
2021/02/22 Python
生产车间班组长岗位职责
2014/01/06 职场文书
实习单位接收函
2014/01/11 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
十佳护士先进事迹
2014/05/08 职场文书
2014年村官工作总结
2014/11/24 职场文书