Python按级别记录格式

时间:2017-05-12 16:11:57

标签: python logging

我正在使用python的日志库,但我希望调试日志的格式与警告和错误日志不同。这可能吗?

ETA:我希望警告和错误显示为:

%(levelname)s: %(message)s

但调试语句显示为

DEBUG: (only Brian cares about this) : %(message)s

我见过的所有其他问题都是改变格式,但一切都会改变。

1 个答案:

答案 0 :(得分:1)

首先,仔细检查您是否真的需要这个。具有不同记录格式的日志输出很容易被人和机器读取。
也许您实际需要的是不同日志目标(控制台与文件)的不同格式,这些格式也会有不同的详细程度(该文件将包含带有附加信息的调试日志)。

现在,方法是使用自定义Formatter

class MultiformatFormatter(logging.Formatter):
    def __init__(self,<args>):
        <...>
    def format(self,record):
        if record.levelno <= logging.DEBUG:
            s=<generate string one way>
        else:
            s=<generate string another way>
        return s
<...>
#for each handler that this should apply to
handler.setFormatter(MultiformatFormatter(<args>))