在logRecord中更改levelname格式

Ami*_*mir 14 python logging

我想知道如何使用python的日志包更改logRecoed中的levelname格式.

formatter = logging.Formatter('%(levelname)-8s %(message)s')
Run Code Online (Sandbox Code Playgroud)

基本上,我想将任何日志名称替换为名称的第一个字母.例如,

INFO -> I, 
WARNING -> W, 
ERROR -> E, 
Run Code Online (Sandbox Code Playgroud)

等等

Mar*_*ers 26

您可以使用precision字段设置最大字段宽度:

formatter = logging.Formatter('%(levelname).1s %(message)s')
Run Code Online (Sandbox Code Playgroud)

.1 将字段宽度设置为最多一个字符,将级别截断为第一个字符:

>>> for level in ('CRITICAL', 'ERROR', 'INFO', 'WARNING', 'DEBUG'):
...     print '%(level)-.1s %(message)s' % {'level': level, 'message': 'Hello world!'}
... 
C Hello world!
E Hello world!
I Hello world!
W Hello world!
D Hello world!
Run Code Online (Sandbox Code Playgroud)

请参阅字符串格式化操作文档:

转换:'s'
含义:String(使用转换任何Python对象str()).
备注:(6)

  1. [...]精度确定使用的最大字符数.

  • 好的!我不知道 .1s 会这样做。惊人的! (2认同)

drt*_*drt 8

如果您想要完全不同的级别名称,请使用 logging.addLevelName

logging.addLevelName(logging.DEBUG, 'DETAILED')
logging.addLevelName(logging.INFO, 'GENERAL')
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。用它来将“警告”缩短为“警告”,以保持我的日志良好对齐。 (2认同)