Python日志记录忽略文件处理程序的转义(\033)

2024-10-06 18:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用日志记录一些信息。
我在记录器中同时使用了FileHandlerStreamHandler,在控制台中输出消息并保存到特定文件中。
在控制台中,为了突出显示一些重要消息,我使用了\033。但这个词也被添加到我的日志文件中,并显示了一个奇怪的符号。下面是我当前使用的示例

logger = logging.getLogger('SayHello')
file_hdlr = logging.FileHandler('test.log')
file_hdlr.setFormatter(logging.Formatter('%(message)s'))
console_hdlr = logging.StreamHandler()
console_hdlr.setFormatter(logging.Formatter('%(message)s'))
logger.addHandler(file_hdlr)
logger.addHandler(console_hdlr)
logger.setLevel(logging.INFO)
logger.info('\033[1;31mHello World\033[0m')

控制台中的输出: 你好世界(红色)

日志文件中的输出: [1;31mHello世界[0m

如何忽略文件处理程序中的\033和其他颜色代码?我应该重写FileHandler类吗?非常感谢


Tags: 文件消息messageformatterlogging记录世界logger
1条回答
网友
1楼 · 发布于 2024-10-06 18:22:09

经过几个小时的跟踪,我发现FileHandler也继承自StreamHandlerFileHandler.emit调用StreamHandler.emit将消息写入文件。
要忽略消息中的控制序列,我必须重写FileHandlerStreamHandler,分别是CustomFileHandlerCustomStreamHandlerCustomFileHandler.emit调用CustomStreamHandler.emit来编写消息,我们必须删除其中的控制序列。在正则表达式的帮助下,应该很容易找到它们

相关问题 更多 >