在Python日志格式中使用制表符

19
我正在使用Python日志记录模块,使用“本地”配置文件支持(config.fileconfig),如文档中所述:

http://docs.python.org/library/logging.html(请参阅logging.conf文件) 我想知道是否可以在配置文件中提供表格化数据格式:

示例配置文件如下:
[formatter_simpleFormatter]  
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

我以为在格式中使用\t就足够了,但事实并非如此:
format=%(asctime)s\t%(name)s\t%(levelname)s\t%(message)s\t  

我尝试了几种方法,但都没有成功。我想这个问题应该很容易解决,但我找不到方法!

请问我该如何做?

2个回答

43

抱歉晚到了,但这些信息可能对其他人也有用...

我也想要一个表格形式的日志,特别是"levelname"字段。

我的格式看起来像这样

format = %(asctime)s - %(levelname)s - %(name)s - %(message)s  

这使得我的日志看起来像这样

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

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

format = %(asctime)s - %(levelname)-8s - %(name)s - %(message)s  

这将我的日志转化为类似于以下内容

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 - CRITICAL - internal.....

"8"是预期最长字符串的长度,在这种情况下为"CRITICAL"。 "-"表示要在右侧填充字符串。

附注: 进行中。

print "-%3s-" % "abcd"

将输出

-abcd-

...字符串不会被截断


最终,我无法在任何地方找到它!! - holms
4
请将文本从英语翻译成中文。仅返回已翻译的文本:%(lineno)04dlineno是调用日志的行号04d 简单的格式化,确保四个数字位数带有前导零4s 在字符串前面填充空格,右对齐-4s 在字符串后面填充空格,左对齐 - Bill Kidd
太完美了!谢谢。 - black
太棒了。谢谢你。 - Chris

7

你是否尝试过在配置文件中输入一个实际的制表符,而不是\t?这对我很有效。


6
这只能在没有将制表符转换为空格的设置的IDE中打开和保存文件时才有效。 - Alexei Tenitski
@AlexeiTenitski 如果你使用的是Windows,你可以在记事本中输入字面制表符,但要小心在你喜欢的IDE(如我的VSC)中编辑时不要用空格替换制表符。 - Anthony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接