2014-07-08 129 views
1

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

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

这似乎是工作,但因为有一个打印命令时,它不尽快写入文件。而是等到它可以打印的一组行。我想要同时写入控制台和日志文件。这怎么能通过输出重定向来完成。请注意,在控制台上运行脚本会在应有的时候打印所有内容。虽然在日志文件上做一个尾巴-f是不平滑的,因为它一次写入大约50行。有什么建议么?

+0

'python.exe'有缓冲'stdout'和'stderr'一个'-u'开关。也许这会有所帮助? –

+0

这实际上似乎在做诡计!谢谢 – preezzzy

回答

0

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

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

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

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

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