我正在使用日志记录一些信息。
我在记录器中同时使用了FileHandler
和StreamHandler
,在控制台中输出消息并保存到特定文件中。
在控制台中,为了突出显示一些重要消息,我使用了\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
类吗?非常感谢
经过几个小时的跟踪,我发现
FileHandler
也继承自StreamHandler
FileHandler.emit
调用StreamHandler.emit
将消息写入文件。要忽略消息中的控制序列,我必须重写
FileHandler
和StreamHandler
,分别是CustomFileHandler
和CustomStreamHandler
CustomFileHandler.emit
调用CustomStreamHandler.emit
来编写消息,我们必须删除其中的控制序列。在正则表达式的帮助下,应该很容易找到它们相关问题 更多 >
编程相关推荐