我正在使用logging
标准库,并将处理程序添加到标准输出。但是,新的处理程序似乎没有默认的日志记录格式,下面是示例
In [23]: root = logging.getLogger()
...: handler = logging.StreamHandler(sys.stdout)
...: log_level_int = getattr(logging, "INFO")
...: root.setLevel(log_level_int)
...: handler.setLevel(log_level_int)
...: root.addHandler(handler)
In [28]: logging.info("test")
INFO:root:test # default stderr handler
test # newly added stdout handler, doesn't have the log level information printed
新的stdout处理程序如何使用与默认格式相同的格式?
由于你具有自定义处理程序,因此需要设置格式化程序。
In [32]: handler.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s'))
In [33]: logging.error('test')
root - ERROR - test
甚至是默认格式化程序:
handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
新的stdout处理程序如何使用与默认格式相同的格式?
你还可以使用logging.basicConfig日志记录设置。
从文档中:
通过使用默认格式化程序创建StreamHandler并将其添加到根记录器中,对记录系统进行基本配置。
这样的事情很简单:
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.info('test')
结果是:
INFO:root:test
那讲得通。非常感谢!