python记录器限制字符串大小



Python记录器库-

嘿,有没有办法限制字符串大小,如果超过最大限制,就返回另一个字符串?我有一个日志文件的最大大小设置,但它不符合需求,因为记录器有时会收到一个base64 for log,这使得终端中的所有日志记录都毫无用处。

示例:

export = '<Base64 Long String>'
logger.info(f'result: {export}')

由于代码是一个大项目的一部分,我不能在函数本身中更改它,有没有办法在记录器级别上设置它?

使用自定义logging.Formatter

import logging
class NotTooLongStringFormatter(logging.Formatter):
def __init__(self, max_length=10):
super(NotTooLongStringFormatter, self).__init__()
self.max_length = max_length
def format(self, record):
if len(record.msg) > self.max_length:
record.msg = record.msg[:self.max_length] + "..."
return super().format(record)
LOG = logging.getLogger("mylogger")
h = logging.StreamHandler()
h.setFormatter(NotTooLongStringFormatter(20))
LOG.addHandler(h)
LOG.error("a" * 10)  # aaaaaaaaaa
LOG.info("a" * 100)  # aaaaaaaaaaaaaaaaaaaa...

要保存具有特定格式的详细日志,只需将其传递给super.__init__

def __init__(self, max_length=10):
fmt = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
super(NotTooLongStringFormatter, self).__init__(fmt)
self.max_length = max_length

2022-01-09 12:29:44,862 - mylogger - WARNING - aaaaaaaaaa
2022-01-09 12:29:44,863 - mylogger - WARNING - aaaaaaaaaaaaaaaaaaaa...

最新更新