当调试还不够时,添加方便的日志记录级别。
logging_levels的Python项目详细描述
随着项目越来越大,logging.debug()成为转储 为你的应用程序所做的一切奠定基础。这通常 变得如此吵闹以至于你无法真正理解自己 正在尝试调试。
虽然它通常在生产中被禁用,但有时您需要 启用调试日志以实际调试某些内容。但是 既然everything都扔在那里了,那就太乱了 通过。
为了帮助解决这个问题,您可以添加额外的日志级别。然而,很少 当它们被添加到项目中时,它们通常是不完整的。 有时你去其他项目,他们不在那里。所以你 必须查找如何添加它们,但通常放弃并坚持 在logging.debug()中转储某些内容,因为稍后将删除它 –对吧?
如果添加一个新的日志级别像两行代码那么简单呢?
砰!:
fromlogging_levelsimportadd_log_leveladd_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:raiseException('Oops')except:# Will include exception in loglog.dang('Something broke.')
项目记录员
通过defualt,日志级别操作全局日志模块。 对于您的项目-特别是如果您正在创建开放源码 模块-您应该隔离日志模块。
fromlogging_levelsimportisolated_logging,log_exceptionslogging=isolated_logging(STUFF=8,THINGS=22,WTF=log_exceptions(1000),)logging.stuff('Log some stuff')logging.wtf('Log some exceptions')
如果您创建这个独立的日志模块 在mylib/__init__.py中,您可以在整个 容易投射。
frommylibimportlogginglogging.error('Oops, broke something.')
标准
为了帮助每个人在相同的日志级别上实现标准化,这个库 提供一个函数来添加 RFC-5424中的syslog协议。
这个库还引入了一些额外的调试级别和 SUPPRESSEDlevel,用于禁止日志记录 您可能要记录的异常,但在其他情况下会考虑处理。
使用函数add_standards添加提供的标准级别 按记录级别:
fromlogging_levels.standardsimportadd_standardsimportloggingadd_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后的所有级别都是(新级别用粗体显示):
Level | Numeric Value |
---|---|
EMERGENCY | 100 |
ALERT | 70 |
CRITICAL | 50 |
ERROR | 40 |
SUPPRESSED | 31 |
WARNING | 30 |
NOTICE | 25 |
INFO | 20 |
DEBUG | 10 |
VERBOSE | 7 |
TRACE | 5 |
NOTSET | 0 |
安装
pip install logging_levels
测试
安装开发要求:
pip install -r test.requirements.txt
安装项目:
pip install -e .
运行pytest:
py.test tests