使用Python日志记录格式的制表

yor*_*rjo 9 python logging

我正在使用带有"本机"配置文件支持(config.fileconfig)的python日志记录模块,如下面的文档中所述:

http://docs.python.org/library/logging.html(参见logging.conf文件)

我想知道是否可以在配置文件中提供列表数据格式:

示例配置文件如下:

[formatter_simpleFormatter]  
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
Run Code Online (Sandbox Code Playgroud)

我虽然在格式中使用\ t就足够但它没有:

format=%(asctime)s\t%(name)s\t%(levelname)s\t%(message)s\t  
Run Code Online (Sandbox Code Playgroud)

我尝试了一些没有成功的事情.我想这很容易,但我找不到它!

我怎样才能做到这一点?

Loh*_*HAR 22

很抱歉迟到了,但这些信息对其他人也很有用......

我还想要一个列表的日志,特别是"levelname"字段

我的格式看起来像这样

format = %(asctime)s - %(levelname)s - %(name)s - %(message)s  
Run Code Online (Sandbox Code Playgroud)

这让我的日志看起来像这样

2014-10-01 17:42:54,261 - INFO - internal.....
2014-10-01 17:43:09,700 - DEBUG - internal.....
2014-10-01 17:44:02,994 - WARNING - internal.....
2014-10-01 17:44:31,686 - CRTITICAL - internal.....
Run Code Online (Sandbox Code Playgroud)

我的解决方案是改变这样的格式

format = %(asctime)s - %(levelname)-8s - %(name)s - %(message)s  
Run Code Online (Sandbox Code Playgroud)

这使我的日志变成了这样的东西

2014-10-01 17:42:54,261 - INFO      - internal.....
2014-10-01 17:43:09,700 - DEBUG     - internal.....
2014-10-01 17:44:02,994 - WARNING   - internal.....
2014-10-01 17:44:31,686 - CRTITICAL - internal.....
Run Code Online (Sandbox Code Playgroud)

"8"是预期在那里的最长字符串的长度,在这种情况下是"CRITICAL"." - "告诉右键填充字符串

旁注:做

print "-%3s-" % "abcd"
Run Code Online (Sandbox Code Playgroud)

将输出

-abcd-
Run Code Online (Sandbox Code Playgroud)

...字符串不会被截断

  • %(lineno)04d lineno是调用日志的行号04d简单格式化以确保四个带有前导零的数字位置4s用前导空格填充字符串,右对齐-4s用尾随空格填充字符串,左对齐 (3认同)

Tam*_*más 6

您是否尝试在配置文件中输入文字制表符而不是\t?这适合我.

  • 只有在IDE中设置将标签转换为空格的人才会打开并保存文件,这才会生效. (6认同)