日志是一个系统的重要组成部分,用以记录用户操作系统运行状态错误信息。日志记录的好坏直接关系到系统出现问题时定位的速度。logging模块Python2.3版本开始成为Python标准库的一部分。

日志级别

在最简单的使用中,我们直接导入logging模块,然后调用它的debuginfowarnerrorcritical等函数记录日志。默认情况下,logging模块将日志打印到屏幕终端,日志级别为WARNNING,也就是说日志级别大于等于WARNING的日志才会被显示

#!/usr/bin/python3
import logginglogging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error.message')
logging.critical('critical.message')

default_logging.py

程序执行结果如下:

$ python3 default_logging.py
WARNING:root:warn message
ERROR:root:error.message
CRITICAL:root:critical.message

日志级别是一个逻辑上的概念,用来区分日志的重要程度。将日志分为不停级别的日志后,一方面可以在大多数时间只保存级别比较高的日志来提高性能;领一方面也便于日志的分析。例如,从一个超大的日志文件中,快速找出几条错误信息。

在python的logging模块中,日志分为5个级别:

日志级别 权重 含义
CAITICAL 50 严重错误,表名软件已不能继续运行了
ERROR 40 发生严重的错误,必须马上处理
WARNING 30 应用程序可以容忍这些信息,软件还是在正常工作,不过它们应该被检查及修复,否则将在不久的将来发生问题
INFO 20 证明事情按预期工作,突出强调应用程序的运行过程
DEBUG 10 详细信息,只有开发人员调试程序时才需要关注的事情

配置日志格式

在使用logging记录日志之前,我们可以进行一些简单的配置,如下:

#!/usr/bin/python3
import logginglogging.basicConfig(filename='app.log', level=logging.INFO)logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error.message')
logging.critical('critical.message')

执行上面的程序,会在当前目录下产生一个app.log文件。该文件中存在INFO及INFO以上级别的日志记录。

上面我们通过basicConfig方法对日志进行了简单的配置,我们也可以进行更加复杂的日志配置。在这之前先了解logging模块中的几个概念:

  • Logger:日志记录器,是应用程序中能直接使用的接口
  • Handler: 日志处理器,用以表名将日志保存到什么地方以及保存多久
  • Formatter: 格式化,用以配置日志的输出格式

在典型的使用场景中,一个日志记录器使用一个日志处理器,一个日志处理器使用一个日志格式化

python的logging模块提供给你了多种方式来配置日志。对于比较简单的脚本,可以直接使用basicConfig在代码中配置日志对于比较复杂的项目,可以将日志的配置保存在一个配置文件中,然后在代码中使用fileConfig函数读取配置文件。

源码中配置日志示例

在这个例子中,日志文件会保存所有DEBUG级别及以上级别的日志。每一条日志包含了打印日志的时间,日志的级别和日志的内容

#!/usr/bin/python3
import logginglogging.basicConfig(filename='app.log',level=logging.DEBUG,format='%(asctime)s : %(levelname)s : %(message)s')logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error.message')
logging.critical('critical.message')

典型的日志配置文件示例

对于复杂的项目,一般将日志配置保存到配置文件中。如下:logging.cnf

#首先在[loggers]声明一个名为root的logger
[loggers]
keys = root#在[handlers]中声明一个名为logfile的handler
[handlers]
keys = logfile#在[formatters]中声明一个名为generic的formatter
[formatters]
keys = generic#在[logger_root]中定义root这个logger所使用的handler
[logger_root]
handlers = logfile#在[handler_logfile]中定义handler输出日志方式、日志文件的切换时间等
[handler_logfile]
class = handlers.TimedRotatingFileHandler
args = ('app.log',)
level = DEBUG
format = generic#[在formatter_generic]中定义了日志的格式,包括日志产生的时间、日志级别、产生日志的文件名和行号等信息
[formatter_generic]
format = '%(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s] %(message)s'

python代码中使用logging.config模块的fileConfig函数加载日志配置

#!/usr/bin/python3
import logging
import logging.configlogging.config.fileConfig('logging.cnf')logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error.message')
logging.critical('critical.message')

转载于:https://www.cnblogs.com/sellsa/p/10078138.html

logging记录日志相关推荐

  1. python中的logging记录日志_[ Python入门教程 ] Python中日志记录模块logging使用实例...

    python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...

  2. python logger日志级别_python干货分享:使用logging记录日志信息

    仅仅将栈信息输出到控制台是远远不够的,更为常见的是使用日志保存程序运行过程中的相关信息,如运行时间.描述信息以及错误或者异常发生时候的特定上下文信息. Python中自带的logging模块提供了日志 ...

  3. 建议收藏,清华高材生准备的90条Python程序建议

    阅读本文大概需要 3 分钟. 本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我删除 自己写 Python 也有四五年了,一直是用自己的"强迫症"在维持自己代码的 ...

  4. python hello world程序编写_编写高质量代码 改善Python程序的91个建议

    建议1:理解Pythonic概念 建议2:编写Pythonic代码 建议3:理解Python与C语言的不同之处 建议4:在代码中适当添加注释 建议5:通过适当添加空行使代码布局更为优雅.合理 建议6: ...

  5. python linux系统管理与自动化运维_《Python Linux系统管理与自动化运维》赖明星著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 赖明星著 出版社:机械工业出版社 出版时间:2017-09-01 版次:1 开本:16开 装帧:平装 ISBN:9787111578659 版权提供:机械工业出版社 基本信息 商品名 ...

  6. 第五章:管理数据库存储结构

    存储结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 数据存 ...

  7. python 必备模块和包_Python_异常和模块

    异常处理 单个异常处理: try: print(num) except NameError: print('没有定义变量') except FileNotFoundError: print('找不到文 ...

  8. 总结了 90 条写 Python 程序的建议

    这是一名5年经验的 Python小伙伴总结的90条python建议,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用. 1. 首先 建议1.理解Pythonic概念--详见Pyt ...

  9. Python 程序开发90个注意事项

    1. 首先 建议1.理解 Pythonic 概念--详见 Python 中的<Python之禅> 建议2.编写 Pythonic 代码 (1)避免不规范代码,比如只用大小写区分变量.使用容 ...

最新文章

  1. Audio: 如果你愿意一层一层剥开我的心
  2. 【移动开发】Android应用开发者应该知道的东西
  3. C++:控制台程序弹出消息框
  4. 扩展--使用队列来优化递归操作完成文件下载
  5. winged edge翼边
  6. PHP扩展插件 imagick 、PDO_MYSQL 安装
  7. 云服务器安装python_腾讯云服务器安装PYTHON3.6.3
  8. CTEX套装下载安装
  9. 银联扫码支付java,银联商务扫码支付-被扫业务
  10. 基于ObjectArx的AutoCAD二次开发的基础入门
  11. 网络攻击与防御-常用网络命令的使用
  12. 如何申请微信公众平台帐号
  13. 精细化运营探索:基于响应模型场景化应用
  14. ih5手机版怎么登录服务器未响应,ih5 与服务器链接教程
  15. 秀米的对话框格子可以变大吗_更新丨秀米图文可以一键兼容多格式发布到其他平台了!...
  16. 四色原型的学习心得分享
  17. SDN有哪些优势呢?
  18. 想要申请PhD,真是路漫漫啊
  19. docker 中安装Jenkins-Jenkins持续化集成(GIT/maven/钉钉机器人)详细步骤
  20. 使用hexo+github免费搭建个人博客网站超详细教程

热门文章

  1. 最感叹的莫过于一见如故,最悲伤的莫过于再见陌路。最深的孤独,是你明知道自己的渴望,却得对它装聋作哑。最美的你不是生如夏花,而是在时间的长河里,波澜不惊。...
  2. mysql复制主从集群搭建
  3. eclipse常用的快捷键
  4. 代码能不能不要写得这么烂?!
  5. The slave I/O thread stops(equal MySQL server ids)
  6. boost常用库案例
  7. Elasticsearch学习(2)—— 常见术语
  8. 使用brew安装软件
  9. Docker认识基础
  10. 阿里巴巴2014研发project师实习生面试经历