【发布时间】:2015-11-17 06:23:21
【问题描述】:
我有某种网络服务器。它将日志写入重定向到文件的sys.stdout。随着文件的增长,我需要定期清除它。我可以只使用sys.stdout吗?
【问题讨论】:
-
没有。标准输出是一个输出流。写作是你唯一能做的。
我有某种网络服务器。它将日志写入重定向到文件的sys.stdout。随着文件的增长,我需要定期清除它。我可以只使用sys.stdout吗?
【问题讨论】:
你可以做的是删除日志文件:
rm logfile
或截断它:
echo -n > logfile
网络服务器仍将使用打开的文件描述符,该文件仍将在磁盘上,但无法再通过该文件名访问。一旦服务器重新启动(使用相同的重定向),日志文件将从头开始创建。
另一种选择是对您的日志使用 logrotate,它允许您更改正在写入的日志文件。
【讨论】:
如果你想刷新标准输出,只需在你的代码中添加这一行。
sys.stdout.flush()
【讨论】: