5

我正在尝试修改 Python 记录器的输出以显示进程 ID。

我尝试过的两种方法:

import logging
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s"
logging.basicConfig(format=FORMAT)
logger = logging.getLogger('my_logger')

import logging
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s"
logger = logging.getLogger('my_logger')
handler = logger.handlers[0]
handler.setFormatter(logging.Formatter(FORMAT))

纳达。第一个不会改变格式。第二个在我尝试访问时引发索引错误logger.handlers[0]

我不想编写自己的处理程序,只需修改默认处理程序上的格式即可。有没有简单的方法?

4

1 回答 1

5

第一个改变格式

logging.<severity>("message")

换句话说,当您在第一个示例中设置格式时,您不需要获取单独的记录器实例,您可以使用logging它自己。话虽如此,如果您正在使用的任何其他模块也使用logging.

如果要更改单独记录器的格式,可以使用以下示例:

from logging import StreamHandler, Formatter

FORMAT = '%(asctime)-15s %(levelname)-6s %(message)s'
DATE_FORMAT = '%b %d %H:%M:%S'
formatter = Formatter(fmt=FORMAT, datefmt=DATE_FORMAT)
handler = StreamHandler()
handler.setFormatter(formatter)
logger = logging.getLogger(__name__)
logger.addHandler(handler)
于 2012-08-05T20:18:20.820 回答