Nginx日志切割后可通过logrotate的postrotate脚本重建指向access.log的软链接access.log.current,确保始终指向最新写入的日志文件;需配置logrotate使用create选项并避免时间戳路径。

在 Nginx 中,日志切割本身不自动维护软链接,但可以通过配合 logrotate 或自定义脚本,在切割后重建指向最新日志文件的软链接(如 access.log.current),从而方便快速查看最新日志内容。
使用 logrotate 配合 postrotate 脚本创建软链接
logrotate 是最常用、最稳妥的日志轮转工具。关键是在 postrotate 阶段手动更新软链接:
- 编辑 logrotate 配置(如
/etc/logrotate.d/nginx):
⚠️ 注意:access.log 在 logrotate 切割后会立即被清空(因配置了 create),所以软链接始终指向“当前正在写入”的那个文件 —— 正是我们要的“最新日志”。
确保软链接目标是实际写入的文件
Nginx 日志写入行为取决于配置中 access_log 指令指定的路径。若你配置的是:
那么 Nginx 始终往 /var/log/nginx/access.log 写;logrotate 切割时会把它重命名为 access.log.1,再新建一个空的 access.log。因此软链接 access.log.current → access.log 就天然指向最新活跃日志。
如果用了带时间戳的路径(如 access.log.$time_iso8601),则不适合软链接方案,应改用固定路径 + logrotate。
手动验证与日常使用
配置生效后,可这样快速查看最新日志:
tail -f /var/log/nginx/access.log.currentless /var/log/nginx/access.log.current-
ls -l /var/log/nginx/access.log.current确认链接是否有效且指向正确文件
无需每次记切割后的带日期文件名,也不用猜哪个是“最新”。只要软链接存在且指向 access.log,就始终可靠。
替代方案:用 shell 函数或 alias 简化操作
如果不想依赖软链接,也可在 ~/.bashrc 中添加快捷命令:
但它依赖文件名排序,不如软链接稳定(尤其开启压缩后会有 .gz 文件干扰)。软链接方式更直接、无歧义、性能更好。


















