为什么将Python记录器输出管道尾部或lnav弄乱输出线的末端?

时间:2019-02-20 21:10:41

标签: python linux tail

我有一个长期运行的python程序,该程序会产生很多日志。我想使用外部工具(lnav,multitail等)格式化日志,主要是在不更改代码的情况下获取彩色日志(例如,在[ERROR]上显示红色,在[INFO]上显示绿色等) )。问题在于,将python程序传递给tail,lnav或其他任何内容都会弄乱行的结尾。这是一个日志正常显示的示例:

[INFO]: Started
[INFO]: Data 0 captured
[ERROR]: Connection down

这是用管道输送到尾巴,lnav等时的样子。

[INFO]: Started
                 [INFO]: Data 0 captured  [ERROR]: Connection down

是管道造成的吗?我该如何尊重行尾?

1 个答案:

答案 0 :(得分:0)

我发现自己遇到了同样的问题,经过大量的实验,这对我有用:

  1. 在您的python记录器中,设置日志记录格式,并确保将sys.stdout用作流
import sys
import logging

FORMAT = '[%(asctime)s] %(levelname)s %(name)s - %(message)s'
logging.basicConfig(format=FORMAT, stream=sys.stdout)
  1. [可选]要充分利用lnav,您需要教它如何解释所使用的日志格式。

    Here's the lnav log parser I use with the format string above.