实时输出重定向

时间:2014-07-08 00:01:42

标签: python shell logfiles

目前,我使用以下命令将脚本重定向到日志文件:

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

这似乎有效,但只要有打印命令就不会写入文件。而是等到它可以打印出一组线条。我希望同时写入控制台和日志文件。如何通过输出重定向完成此操作。请注意,在控制台上运行脚本会在应该的时候打印所有内容。虽然在日志文件上执行tail -f并不顺利,因为它一次写入大约50行。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

听起来 shell 实际上正在进行缓冲,因为你说当它不是 tee ' d。

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

但是我建议完全在 Python 中进行,所以你有更多的直接控制,而不是打印到 stdout ,使用 logging 模块。

这将允许在多个日志记录级别方面提供额外的灵活性,能够集中将多个源添加到日志记录对象(即标准输出和文件 - 以及如果您&#,则按大小旋转的文件39;喜欢logging.handlers.RotatingFileHandler),你不会受到外壳的外部缓冲。

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