python - 修改Python记录器的输出格式

标签 python logging

我正在尝试修改我的 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] 时,第二个抛出索引错误。

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

最佳答案

第一个改变

的格式
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)

关于python - 修改Python记录器的输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819721/

相关文章:

python - 如何从两个 "array.flatten()"-ed列表在python中创建字符串列表

logging - 用于日志记录的 azure 存储

python - Tensorflow:tf.image.resize 仍然没有对齐角吗?

python - 计算 Pandas 数据框中某个值的出现次数

python - sqlite3 无法在 python 3 中导入

node.js - 自定义记录器和 Socket.io 1.x

python - Django 设置默认日志记录

登录 Clojure

logging - 从PHP应用程序记录页面请求数据的可扩展方式?

python - 从R购买Python脚本时出现错误1033