Python的logging模块的详细日志级别
项目描述
verboselogs软件包扩展了Python的logging模块,增加了日志级别NOTICE、SPAM、SUCCESS和VERBOSE
NOTICE级别位于预定义的WARNING和INFO级别之间。
SPAM级别位于预定义的DEBUG和NOTSET级别之间。
SUCCESS级别位于预定义的WARNING和ERROR级别之间。
VERBOSE级别位于预定义的INFO和DEBUG级别之间。
执行此操作的代码简单且简短,但我仍不想将其复制/粘贴到我在工作的每个项目中,因此有了这个软件包。它目前已在Python 2.6、2.7、3.4、3.5、3.6和PyPy上进行测试。
安装
verboselogs软件包可在PyPI上找到,这意味着安装应该像这样简单
$ pip install verboselogs
实际上有各种各样的方式来安装Python包(例如,用户的site-packages目录,虚拟环境或者直接全局安装),我并没有在这里深入讨论这个话题的意图,所以如果你感到害怕,请在回到这些说明之前先了解一下你的选项;:-)。
用法
开始使用verboselogs包非常简单
>>> import logging, verboselogs >>> logger = verboselogs.VerboseLogger('verbose-demo') >>> logger.addHandler(logging.StreamHandler()) >>> logger.setLevel(logging.VERBOSE) >>> logger.verbose("Can we have verbose logging? %s", "Yes we can!")
以下是一个带有命令行界面和可配置日志的非常简单的Python程序框架
"""
Usage: demo.py [OPTIONS]
This is the usage message of demo.py. Usually
this text explains how to use the program.
Supported options:
-v, --verbose make more noise
-h, --help show this message and exit
"""
import getopt
import logging
import sys
import verboselogs
logger = verboselogs.VerboseLogger('demo')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.INFO)
# Command line option defaults.
verbosity = 0
# Parse command line options.
opts, args = getopt.getopt(sys.argv[1:], 'vqh', ['verbose', 'quiet', 'help'])
# Map command line options to variables.
for option, argument in opts:
if option in ('-v', '--verbose'):
verbosity += 1
elif option in ('-q', '--quiet'):
verbosity -= 1
elif option in ('-h', '--help'):
print __doc__.strip()
sys.exit(0)
else:
assert False, "Unhandled option!"
# Configure logger for requested verbosity.
if verbosity >= 4:
logger.setLevel(logging.SPAM)
elif verbosity >= 3:
logger.setLevel(logging.DEBUG)
elif verbosity >= 2:
logger.setLevel(logging.VERBOSE)
elif verbosity >= 1:
logger.setLevel(logging.NOTICE)
elif verbosity < 0:
logger.setLevel(logging.WARNING)
# Your code goes here.
...
如果你想将VerboseLogger设置为所有后续日志实例的默认日志类,你可以使用verboselogs.install()来实现
import logging
import verboselogs
verboselogs.install()
logger = logging.getLogger(__name__) # will be a VerboseLogger instance
Pylint插件
如果你使用上述verboselogs.install()方法,那么Pylint可能无法足够智能地识别logging正在使用verboselogs,从而导致诸如以下错误
E:285,24: Module 'logging' has no 'VERBOSE' member (no-member) E:375,12: Instance of 'RootLogger' has no 'verbose' member (no-member)
为了解决这个问题,verboselogs提供了一个Pylint插件verboselogs.pylint,当使用pylint --load-plugins verboselogs.pylint加载时,会将verboselogs方法和常量添加到Pylint对logging模块的理解中。
日志级别概述
下表显示了预定义的日志级别和由本包定义的VERBOSE、NOTICE和SPAM级别的名称、数值和描述,以及我添加的一些注释。
级别 |
值 |
描述 |
注释 |
---|---|---|---|
NOTSET |
0 |
当创建日志记录器时,级别设置为NOTSET(请注意,根日志记录器是以WARNING级别创建的)。 |
此级别不打算被显式使用,但是当日志记录器的级别设置为NOTSET时,其有效级别将从父日志记录器继承。 |
SPAM |
5 |
对于常规调试来说太详细了,但在某人深夜调试时感到绝望并决定需要尽可能多的工具时很有用!:-) |
|
DEBUG |
10 |
详细的信息,通常仅在诊断问题时才感兴趣。 |
通常在此级别,日志输出非常低级,对于不了解软件内部的人来说并不有用。 |
VERBOSE |
15 |
详细的信息,应能被有经验的用户理解,以提供对软件行为的洞察;这是一种高级调试信息。 |
|
INFO |
20 |
确认事情正在按预期工作。 |
|
NOTICE |
25 |
有关具有多个成功路径或可能需要撤销的操作的审计信息。 |
|
WARNING |
30 |
表示发生了意外的情况,或可能在未来出现一些问题(例如“磁盘空间低”)。软件仍然按预期工作。 |
|
SUCCESS |
35 |
非常明确的成功确认。 |
|
ERROR |
40 |
由于更严重的问题,软件无法执行某些功能。 |
|
CRITICAL |
50 |
严重错误,表示程序本身可能无法继续运行。 |
联系方式
verboselogs的最新版本可在PyPI和GitHub上找到。文档托管在Read the Docs。有关错误报告,请在GitHub上创建一个问题。如果你有任何问题、建议等,请随时通过peter@peterodding.com给我发电子邮件。
许可证
本软件遵循 MIT 许可协议 许可。
© 2017 Peter Odding.
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
verboselogs-1.7.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e33ddedcdfdafcb3a174701150430b11b46ceb64c2a9a26198c76a156568e427 |
|
MD5 | 7c33bd58875e0d316a4f8d7505e946ff |
|
BLAKE2b-256 | 291590ffe9bdfdd1e102bc6c21b1eea755d34e69772074b6e706cab741b9b698 |
verboselogs-1.7-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d63f23bf568295b95d3530c6864a0b580cec70e7ff974177dead1e4ffbc6ff49 |
|
MD5 | da40d0a9becbd9c4ffb0e9bd3f74a0d4 |
|
BLAKE2b-256 | b89dc5c3cb0093642042fd604b53928ac65e7650fdc5a8a97814288e29beab84 |