Warm tip: This article is reproduced from serverfault.com, please click

其他-Python日志记录格式处理程序标准输出默认格式

(其他 - Python logging format handler stdout default format)

发布于 2020-12-01 05:35:17

我正在使用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处理程序如何使用与默认格式相同的格式?

Questioner
Darren Christopher
Viewed
0
salparadise 2020-12-01 14:35:24

由于你具有自定义处理程序,因此需要设置格式化程序。

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