在logRecord中更改levelname格式

时间:2014-12-12 22:24:36

标签: python logging

我想知道如何使用python' s记录包更改logRecoed中levelname的格式。

formatter = logging.Formatter('%(levelname)-8s %(message)s')

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

INFO -> I, 
WARNING -> W, 
ERROR -> E, 

2 个答案:

答案 0 :(得分:21)

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

formatter = logging.Formatter('%(levelname).1s %(message)s')

.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!

请参阅String Formatting Operations documentation

  

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

     
      
  1. [...]精度决定了所使用的最大字符数。
  2.   

答案 1 :(得分:0)

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

logging.addLevelName(logging.DEBUG, 'DETAILED')
logging.addLevelName(logging.INFO, 'GENERAL')