为 DEBUG 不够时添加方便的日志记录级别。
项目描述
随着项目变得越来越大,logging.debug()成为应用程序正在执行的所有操作的垃圾场。这通常会变得如此嘈杂,以至于您无法真正理解要调试的内容。
尽管它通常在生产中被禁用,但有时您需要启用调试日志记录以 - 你知道 - 实际调试某些东西。但既然所有的东西都扔在那里,那太乱了。
为了解决这个问题,您可以添加额外的日志记录级别。然而,它们很少被添加到项目中,而且当它们被添加时,它们通常是不完整的。然后有时你去其他项目,他们不在那里。因此,您必须查找如何添加它们,但通常会放弃并坚持在logging.debug()中转储一些内容,因为您稍后会删除它——对吗?
如果添加一个新的日志级别就像 2 行代码一样简单呢?
砰!:
from logging_levels import add_log_level
add_log_level(VERBOSE=9)
一些新的日志级别怎么样?:
add_log_level(VERBOSE=9, TRACE=8, NOISE=5, IMPORTANT=100)
现在与他们一起登录:
log.verbose("I've said too much")
log.trace("But I haven't said enough")
log.noise("That's me in the corner")
log.important("That's me in the spotlight")
想用您喜欢的新日志级别隐式记录异常吗?:
add_log_level(DANG=90, exceptions=True)
try:
raise Exception('Oops')
except:
# Will include exception in log
log.dang('Something broke.')
项目记录器
默认情况下,logging_levels 操作全局日志记录模块。对于你的项目——特别是如果你正在创建开源模块——你应该隔离你的日志模块。
from logging_levels import isolated_logging, log_exceptions
logging = isolated_logging(
STUFF=8,
THINGS=22,
WTF=log_exceptions(1000),
)
logging.stuff('Log some stuff')
logging.wtf('Log some exceptions')
如果您在mylib/__init__.py中创建这个独立的日志记录模块,那么您可以轻松地在整个项目中使用它。
from mylib import logging
logging.error('Oops, broke something.')
标准
为了帮助每个人标准化相同的日志级别,这个库提供了一个函数来添加一些缺少的严重级别,这些级别由RFC-5424中的 syslog 协议定义。
这个库还引入了一些额外的调试级别和一个 SUPPRESSED级别,该级别旨在用于记录您可能想要记录的被抑制的异常,但在其他方面考虑处理。
使用函数add_standards添加由 logging-levels 提供的标准级别:
from logging_levels.standards import add_standards
import logging
add_standards(logging)
log.emergency('This aggression will not stand, man.')
log.alert('Oh no! Something happened!')
log.notice('FYI this other thing happened.')
log.verbose('Debug, but so much more')
log.trace('Log every -- single -- detail')
log.suppressed('Warn a suppressed exception')
使用add_standards后的所有级别都将是(新级别以粗体显示):
等级 |
数值 |
|---|---|
紧急情况 |
100 |
警报 |
70 |
批判的 |
50 |
错误 |
40 |
抑制 |
31 |
警告 |
30 |
注意 |
25 |
信息 |
20 |
调试 |
10 |
详细 |
7 |
痕迹 |
5 |
没有设置 |
0 |
安装
pip install logging_levels
测试
安装开发要求:
pip install -r test.requirements.txt
安装项目:
pip install -e .
运行 pytest:
py.test tests