Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么管道Python记录器输出到尾部或lnav会弄乱输出行的结尾?_Python_Linux_Tail - Fatal编程技术网

为什么管道Python记录器输出到尾部或lnav会弄乱输出行的结尾?

为什么管道Python记录器输出到尾部或lnav会弄乱输出行的结尾?,python,linux,tail,Python,Linux,Tail,我有一个长时间运行的python程序,它会生成大量日志。我想使用外部工具(lnav、multitail等)格式化日志,主要是在不更改代码的情况下获取彩色日志(例如,在[ERROR]上获取红色,在[INFO]上获取绿色等)。问题是,将python程序管道化到tail、lnav或其他任何地方,会弄乱行尾。以下是日志通常的外观示例: [INFO]: Started [INFO]: Data 0 captured [ERROR]: Connection down 这就是管道输送到尾部、lnav等的情况

我有一个长时间运行的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

它是由管道引起的吗?我怎样才能让它尊重行尾呢?

我发现自己也有同样的问题,经过多次实验,以下是对我有效的方法:

  • 在python记录器中,设置日志记录格式,并确保使用sys.stdout作为流
  • 导入系统 导入日志记录 格式='[%(asctime)s]%(levelname)s%(name)s-%(message)s' logging.basicConfig(format=format,stream=sys.stdout)
  • [可选]为了充分利用lnav,您需要教它如何解释您使用的日志格式