有时我使用%(funcName)s
配置python日志格式化程序。但是当函数名称很长时,我不喜欢这个。
使用python logging %(funcName)s
时,是否可以缩短日志标头?如果是,怎么做?
你能说...将字符总数限制为10个字符吗?
答案 0 :(得分:2)
日志记录格式字符串中的%(...)s
项是%替换项,您可以通过执行%(funcName).10s
e.g。
import logging
logging.basicConfig(
format='%(funcName).10s %(message)s',
level=logging.INFO,
)
logger = logging.getLogger()
def short():
logger.info("I'm only little!")
def really_really_really_really_long():
logger.info("I'm really long")
short()
really_really_really_really_long()
给出
andy@batman[17:54:01]:~$ p tmp_x.py
short I'm only little!
really_rea I'm really long
答案 1 :(得分:0)
您可以扩展logging.formatter
类以获得所需的格式,如下所示。
这只是一个例子。你应该根据你的要求修改它 class MyFormatter(logging.Formatter): in_console = False def init (个体经营): self.mod_width = 30 self.datefmt ='%H:%M:%S'
def format(self, record):
s = []
cmodule = record.module + ":" + str(record.lineno)
cmodule = cmodule[-self.mod_width:].ljust(self.mod_width)
format_str = ("%-7s %s %s" % (record.levelname, self.formatTime(record, self.datefmt), cmodule))
pad_len = len(format_str)
for line in record_msg[1:]:
line = " " * pad_len + " : " + line
s.append(line)
s = "%s : %s" % (format_str, "\n".join(s))
return s
my_formatter = MyFormatter()
log.setFormatter(my_formatter)