Python:在日志模块中包装日志文件文本
有没有一种方法可以配置PythonPython:在日志模块中包装日志文件文本,python,logging,word-wrap,Python,Logging,Word Wrap,有没有一种方法可以配置Pythonlogging模块的实例,将它写入的文本包装到日志文件中 当前,每个logging.info()或warning()或任何调用只写入一行,即使它非常长。这损害了可读性。如果能够设置一些字符,记录器将在这些字符之后换行到下一行,那就太好了 运行:Windows7、Python 3.3 更正:日志文件中很长的条目确实会被包装,但必须在500-1000个字符之后。这一套在哪里,可以放低一点吗?我想不出一个好办法,而且据我所知,不管日志行有多长,它都不应该缠绕日志行 一
logging
模块的实例,将它写入的文本包装到日志文件中
当前,每个logging.info()或warning()或任何调用只写入一行,即使它非常长。这损害了可读性。如果能够设置一些字符,记录器将在这些字符之后换行到下一行,那就太好了
运行:Windows7、Python 3.3
更正:日志文件中很长的条目确实会被包装,但必须在500-1000个字符之后。这一套在哪里,可以放低一点吗?我想不出一个好办法,而且据我所知,不管日志行有多长,它都不应该缠绕日志行 一般来说,在调用日志时,应注意对多行的日志记录,但我认为这是一种糟糕的做法,因为它可以使日志分析更困难。 如果您这样做,我会在您包装的每一行的开头添加一个选项卡,这样您就可以知道哪些行是同一日志消息条目的一部分:
log.info("firstLine\t\nsecondLine\t\nthridLine")
输出应如下所示:
INFO:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
另一个使其更加自动化的选项是在日志行中添加类似的内容:
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:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
只需将for循环中的10和字符串大小更改为您想要的大小。我想不出一个好方法来做到这一点,而且据我所知,无论日志行有多长,它都不应该包裹日志行 一般来说,在调用日志时,应注意对多行的日志记录,但我认为这是一种糟糕的做法,因为它可以使日志分析更困难。 如果您这样做,我会在您包装的每一行的开头添加一个选项卡,这样您就可以知道哪些行是同一日志消息条目的一部分:
log.info("firstLine\t\nsecondLine\t\nthridLine")
输出应如下所示:
INFO:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
另一个使其更加自动化的选项是在日志行中添加类似的内容:
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:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
只需将for循环中的10和字符串大小更改为您想要的大小。我想不出一个好方法来做到这一点,而且据我所知,无论日志行有多长,它都不应该包裹日志行 一般来说,在调用日志时,应注意对多行的日志记录,但我认为这是一种糟糕的做法,因为它可以使日志分析更困难。 如果您这样做,我会在您包装的每一行的开头添加一个选项卡,这样您就可以知道哪些行是同一日志消息条目的一部分:
log.info("firstLine\t\nsecondLine\t\nthridLine")
输出应如下所示:
INFO:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
另一个使其更加自动化的选项是在日志行中添加类似的内容:
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:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
只需将for循环中的10和字符串大小更改为您想要的大小。我想不出一个好方法来做到这一点,而且据我所知,无论日志行有多长,它都不应该包裹日志行 一般来说,在调用日志时,应注意对多行的日志记录,但我认为这是一种糟糕的做法,因为它可以使日志分析更困难。 如果您这样做,我会在您包装的每一行的开头添加一个选项卡,这样您就可以知道哪些行是同一日志消息条目的一部分:
log.info("firstLine\t\nsecondLine\t\nthridLine")
输出应如下所示:
INFO:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
另一个使其更加自动化的选项是在日志行中添加类似的内容:
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:firstLine
secondLine
thridLine
INFO: This is a
String I w
ant to log
to many l
ines
只需将for循环中的10和字符串大小更改为您想要的大小。我带着同样的问题来到这里,最后使用了Luke的方法,但是使用了内置python模块。我喜欢将文本包装在空白处,并在连字符单词中的连字符后面,而且我喜欢为包装行添加缩进的规定。因此:
import textwrap
textwrap.fill(log_line, subsequent_indent = '\t\t\t\t')
我带着同样的问题来到这里,最后使用了Luke的方法,但是使用了内置python模块。我喜欢将文本包装在空白处,并在连字符单词中的连字符后面,而且我喜欢为包装行添加缩进的规定。因此:
import textwrap
textwrap.fill(log_line, subsequent_indent = '\t\t\t\t')
我带着同样的问题来到这里,最后使用了Luke的方法,但是使用了内置python模块。我喜欢将文本包装在空白处,并在连字符单词中的连字符后面,而且我喜欢为包装行添加缩进的规定。因此:
import textwrap
textwrap.fill(log_line, subsequent_indent = '\t\t\t\t')
我带着同样的问题来到这里,最后使用了Luke的方法,但是使用了内置python模块。我喜欢将文本包装在空白处,并在连字符单词中的连字符后面,而且我喜欢为包装行添加缩进的规定。因此:
import textwrap
textwrap.fill(log_line, subsequent_indent = '\t\t\t\t')
不,
logging
从不换行-可能是您的编辑器在做这件事。不过,您可以在日志消息中包含换行符。不,logging
从不换行—可能是您的编辑器在执行此操作。不过,您可以在日志消息中包含换行符。不,logging
从不换行—可能是您的编辑器在执行此操作。不过,您可以在日志消息中包含换行符。不,logging
从不换行—可能是您的编辑器在执行此操作。不过,您可以在日志消息中包含换行符。