nginx日志分隔的问题

在实际环境中, 由于nginx会产生大量日志, 所以会按照以天为单位对日志文件进行分隔
我有个问题, 就是nginx在日志正在备份并创建新日志文件时, 此时的请求日志会丢失么?

阅读 2.1k
3 个回答
你是怎么以什么方式进行分割的?一般如果用shell来处理的话不会存在丢失的情况。

如果你用的是logrotate的话,不会的。
Linux下的每个文件会自带一个表示inode,logrotate首先重命名正在写入的日志文件(一般是给文件名添加当前日期),而这个文件的inode没变,nginx还是依据inode来找到这个文件往里写。
然后logrotate会通知nginx需要另外打开新的日志文件来写入,那么nginx会再打开新的日志文件来写入,命名和原来保持一致。
如此而已。
你可以再看看这篇文章how-logrotate-works

何必自己写shell,如果你用的包管理安装的nginx,自带就有logrotate配置,你稍微编辑下就行了。Linux系统基本都用自带的logrotate滚动日志

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题