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中函数总结之装饰器闭包详解
Jun 12 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
Python实现GIF图倒放
Jul 16 Python
python如何代码集体右移
Jul 20 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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
Terran兵种对照表
2020/03/14 星际争霸
apache php模块整合操作指南
2012/11/16 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
一个用js实现的页内搜索代码
2007/05/23 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
js实现省份下拉菜单效果
2017/02/15 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
RC4文件加密的python实现方法
2015/06/30 Python
利用Python如何生成随机密码
2016/04/20 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Python 中如何写注释
2020/08/28 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
《春雨》教学反思
2014/04/24 职场文书
运动会演讲稿300字
2014/08/25 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers