当前,我正在使用以下命令将脚本重定向到日志文件:
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
),而您不会受外壳的外部缓冲影响。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句