实时输出重定向

抢先

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

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

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

汉普森

听起来好像shell实际上是在做缓冲,因为您说它在未tee'd时会按预期输出到控制台

您可以在这篇文章中找到撤消外壳缓冲的潜在解决方案:https : //unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

但是我建议完全在Python中完成此操作,这样您可以进行更直接的控制,而不是打印到stdout而是使用日志记录模块。

这将在多个日志记录级别方面提供额外的灵活性,可以向日志对象集中添加​​多个源(即stdout和一个文件-如果需要,它可以随大小而旋转logging.handlers.RotatingFileHandler),而您不会受外壳的外部缓冲影响。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章