实时输出重定向(Realtime output redirection)

2019-10-20 10:13发布

目前,我重定向脚本使用下面的命令日志文件:

python /usr/home/scripts/myscript.py 2>&1 | tee /usr/home/logs/mylogfile.log

这似乎是工作,但它不只要有一个打印命令写入文件。 相反,它等待,直到有一组,它可以打印线。 我希望控制台和日志文件被同时写入。 这怎么可能用输出重定向完成。 请注意,在控制台上运行脚本时,它应该打印的一切。 虽然在日志文件中做了尾-f,因为它在一个时间写的50行并不顺利。 有什么建议么?

Answer 1:

这听起来像外壳实际上是什么做缓冲,因为你说作为输出预计到控制台时不开球 “d。

你可以看看这个帖子了潜在的解决方案,以撤消壳缓冲: https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

但我会建议完全在Python中这样做,让你有更多的直接控制,而不是打印到标准输出 ,使用记录模块。

这将允许在多个日志记录级别方面更大的灵活性,以多源添加到日志对象集中(即stdout和文件-和一个与如果你愿意与像大小旋转的能力logging.handlers.RotatingFileHandler )和你不会受到外壳的外部缓冲。

更多信息: https://docs.python.org/2/howto/logging.html



文章来源: Realtime output redirection