我有一堆运行 Web 服务的 ec2 实例;每个小时我都想将日志复制回 S3。效果非常好。
但是,如果我移动日志然后触摸新文件,或者只是将内容写入 0,Apache 就会从那时起停止写入日志。
怎样做才是最好的?
答案1
日志文件是通过其文件描述符(inode)而不是其名称来访问的。
要安全地轮换 apache 日志,您必须重新创建日志文件,然后重新启动 apache。
大多数发行版都带有预先配置的 apache logrotate 设置;请查看这些。
答案2
通常,logrotate 脚本在执行日志轮换并创建新日志文件后,会向正在运行的进程发出reload
(send SIGHUP
)。这使正在运行的进程(在您的例子中是 apache)能够重新打开日志文件并继续将日志写入正确的文件描述符。