日志的作用
作为一名 java 程序员,我深知日志的重要性。
为问题的排查和问题的追踪提供了高效而优雅的方式。
下面来一起看一下 python 的日志处理吧。
ps: 本文暂时不仔细研究每一个配置的信息,在使用中慢慢学习。毕竟 python 的 logging 和 java 的各种日志卷框架思想非常类似。
logging
标准模块简介
logging 模块提供功能齐全且灵活的日志记录系统。
在最简单的情况下,日志消息被发送到文件或 sys.stderr
入门例子
import logging
logging.debug('Debugging information')
logging.info('Informational message')
logging.warning('Warning:config file %s not found', 'server.conf')
logging.error('Error occurred')
logging.critical('Critical error -- shutting down')
产生的日志如下:
WARNING:root:Warning:config file server.conf not found
ERROR:root:Error occurred
CRITICAL:root:Critical error -- shutting down
默认情况下,informational 和 debugging 消息被压制,输出会发送到标准错误流。
其他输出选项包括将消息转发到电子邮件,数据报,套接字或 HTTP 服务器。
新的过滤器可以根据消息优先级选择不同的路由方式:DEBUG,INFO,WARNING,ERROR,和 CRITICAL。
日志系统可以直接从 Python 配置,也可以从用户配置文件加载,以便自定义日志记录而无需更改应用程序。
日志级别
日志记录级别的数值在下表中给出。
如果你想要定义自己的级别,并且需要它们具有相对于预定义级别的特定值,那么这些内容可能是你感兴趣的。
如果你定义具有相同数值的级别,它将覆盖预定义的值; 预定义的名称丢失。
级别 数值
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0
loguru
看了一下,也许是 python 的官方 logging 包做的比较好吧,pyhton 的框架选择并不多。
loguru 就是一个例子。
快速开始
安装
pip install loguru
入门例子
>>> from loguru import logger
>>> logger.debug("That's it, beautiful and simple logging!")
2019-04-08 18:57:23.462 | DEBUG | __main__:<module>:1 - That's it, beautiful and simple logging!
其他
这个框架还提供了其他一系列灵活的方法。
可以参见 https://github.com/Delgan/loguru。
logbook
也是一款开源,非常优秀的日志框架。
简介
Logbook is a logging system for Python that replaces the standard library’s logging module. It was designed with both complex and simple applications in mind and the idea to make logging fun:
快速入门
>>> from logbook import Logger, StreamHandler
>>> import sys
>>> StreamHandler(sys.stdout).push_application()
>>> log = Logger('Logbook')
>>> log.info('Hello, World!')
[2015-10-05 18:55:56.937141] INFO: Logbook: Hello, World!
个人感觉
我觉得这个框架做的没有 loguru 优雅。
参考资料
- github
- other