我正在使用python的日志库,但我希望调试日志的格式与警告和错误日志不同。这可能吗?
ETA:我希望警告和错误显示为:
%(levelname)s: %(message)s
但调试语句显示为
DEBUG: (only Brian cares about this) : %(message)s
我见过的所有其他问题都是改变格式,但一切都会改变。
答案 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>))