Python: 在日志模块中包裹日志文件文本
有没有办法配置Python的logging
模块,让它在写日志文件的时候自动换行呢?
现在每次调用logging.info()、warning()或者其他的日志记录方法时,即使内容很长,它们也只会写在一行上。这让人看起来不太舒服。如果能设置一个字符数,当超过这个数时,日志就能自动换到下一行,那就太好了。
我现在使用的是:Windows 7,Python 3.3
补充说明:其实很长的日志条目是会换行的,但大概是在500到1000个字符之后。这个设置在哪里?能不能把这个数字调低一点?
2 个回答
4
我也是带着同样的问题来的,最后我用了Luke的方法,不过是用Python自带的一个模块textwrap。我喜欢在空格处换行,而且在带连字符的单词后面也换行。此外,我还喜欢可以为换行的行添加缩进的功能。所以:
import textwrap
textwrap.fill(log_line, subsequent_indent = '\t\t\t\t')
2
我想不出一个好的办法来处理这个问题,而且据我所知,日志行不管多长都不应该换行。
一般来说,记录多行日志应该在你调用日志的时候处理,但我认为这大多数情况下是不好的做法,因为这样会让后续分析日志变得有点困难。
如果你真的要这样做,我建议在每一行的开头加一个制表符,这样你就能分辨出哪些行是同一条日志信息的一部分:
log.info("firstLine\t\nsecondLine\t\nthridLine")
输出应该看起来像这样:
INFO:firstLine
secondLine
thridLine
另一个让它更自动化的选项是给日志行添加一些这样的内容:
X = "This is a String I want to log to many lines"
log.info("".join([X[i:i+10]+"\n\t" for i in xrange(0, len(X), 10)]))
输出应该看起来像这样:
INFO: This is a
String I w
ant to log
to many l
ines
只需把循环中的10和字符串大小改成你想要的大小就可以了。