gpt4 book ai didi

python - 将 python 日志记录格式应用于包含新行的消息的每一行

转载 作者:行者123 更新时间:2023-11-28 21:46:13 25 4
gpt4 key购买 nike

我想在日志文件中包含一个与请求相关联的 ID,用于每个 日志行。我有通过工作正常的日志过滤器检索请求 ID 的机制。

我的问题是,当日志行包含换行符时,该行当然会换行到“裸”行。有没有办法告诉日志库拆分消息,并将格式应用于拆分的每个元素?

import logging

logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
"%(requestid)s\t%(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

logger.debug("blah\nblah")

输出:

xxx blah
blah

期望的输出:

xxx blah
xxx blah

最佳答案

虽然这不是解决此问题的最佳方法,但这将在不更改大量代码的情况下帮助您。

import logging


class CustomHandler(logging.StreamHandler):
def __init__(self):
super(CustomHandler, self).__init__()

def emit(self, record):
messages = record.msg.split('\n')
for message in messages:
record.msg = message
super(CustomHandler, self).emit(record)


log = logging.getLogger()
handler = CustomHandler()
formattor = logging.Formatter("xxx:%(message)s")

handler.setFormatter(formattor)

log.addHandler(handler)
log.setLevel(logging.DEBUG)

if __name__ == '__main__':
log.debug('hello\nhi')

输出:

xxx:hello
xxx:hi

关于python - 将 python 日志记录格式应用于包含新行的消息的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com