Python:在日志记录模块中包装日志文件文本

时间:2014-08-20 18:56:57

标签: python logging textwrapping

有没有办法配置Python logging模块的实例来包装它写入日志文件的文本?

目前每个logging.info()或warning()或任何调用只写一行,即使它真的很长。这会伤害可读性。能够设置一些字符,然后记录器将换行到下一行,这将是很好的。

正在运行:Windows 7,Python 3.3

更正:日志文件的确实很长的条目确实被包装,但是必须在大约500-1,000个字符之后。这个集合在哪里可以降低它?

2 个答案:

答案 0 :(得分:1)

我无法想到一个很好的方法来做到这一点,据我所知,它不应该包裹日志线,无论它有多长。

一般情况下,当您调用log时,应该记录多行记录,但我认为这是一种非常糟糕的做法,因为它可以使日志分析稍后变得更加困难。

如果您执行此类操作,我会在您包装的每一行的开头添加一个选项卡,以便您可以确定哪些行是同一日志消息条目的一部分:

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

只需将for循环中的10和字符串大小更改为您想要的大小。

答案 1 :(得分:1)

我带着相同的问题来到这里,最后使用了Luke的方法,但是使用了python模块textwrap中的构建。我喜欢将文本包装在空格上,并在连字符后面的连字符后面,而且我喜欢为包装线添加缩进的规定。所以:

import textwrap
textwrap.fill(log_line, subsequent_indent = '\t\t\t\t')