目前,我重定向脚本使用下面的命令日志文件:
python /usr/home/scripts/myscript.py 2>&1 | tee /usr/home/logs/mylogfile.log
这似乎是工作,但它不只要有一个打印命令写入文件。 相反,它等待,直到有一组,它可以打印线。 我希望控制台和日志文件被同时写入。 这怎么可能用输出重定向完成。 请注意,在控制台上运行脚本时,它应该打印的一切。 虽然在日志文件中做了尾-f,因为它在一个时间写的50行并不顺利。 有什么建议么?
目前,我重定向脚本使用下面的命令日志文件:
python /usr/home/scripts/myscript.py 2>&1 | tee /usr/home/logs/mylogfile.log
这似乎是工作,但它不只要有一个打印命令写入文件。 相反,它等待,直到有一组,它可以打印线。 我希望控制台和日志文件被同时写入。 这怎么可能用输出重定向完成。 请注意,在控制台上运行脚本时,它应该打印的一切。 虽然在日志文件中做了尾-f,因为它在一个时间写的50行并不顺利。 有什么建议么?
这听起来像外壳实际上是什么做缓冲,因为你说作为输出预计到控制台时不开球 “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