我已经在服务器上安装了 Debian 12,并安装了 nginx 服务。
但是,Debian 12 没有安装 logrotate 包。
我想知道这种情况的最佳实践,是否应该安装这个包并从 systemd-timer 调用它,或者是否存在其他方法使用 journald 轮换 nginx 日志。
答案1
apt install nginx logrotate
nginx 附带了一个示例 logrotate 配置。即使没有包含它,这也是一个非常流行的应用程序,并且有许多关于如何轮换其日志文件的文章。
包管理器有时对共享实用程序没有很强的依赖性。在这种情况下,每个带有日志文件的应用程序和 logrotate。允许选择:不是每个人都会使用它,如果它默认启用,有些人会感到惊讶。
当然,通过名称来请求它也很容易:在用于设置 http 服务器的自动化程序中安装这两个包。
答案2
Debian 12 使用 journalctl 日志记录。在 journalctl 日志记录中,日志轮换由日志系统本身管理。日志以二进制格式存储在日志文件中,通常位于 /var/log/journal 目录中。轮换过程涉及创建一组索引日志文件以有效管理日志条目。
编辑: Debian 中的 logrotate 软件包主要管理和轮换传统系统日志位置中的日志文件。它不直接处理 journald(systemd 使用的日志系统)管理的日志。
您还可以通过编辑文件中的以下选项来限制日志占用的存储空间/etc/systemd/journald.conf
:SystemMaxUse=
和RuntimeMaxUse=
:日志分别在持久存储(/var/log/journal)和内存存储(/run/log/journal)中应占用的最大空间量。SystemKeepFree= 和 RuntimeKeepFree=:定义应保留用于其他用途的磁盘空间百分比。
SystemMaxFileSize=
和RuntimeMaxFileSize=
:控制日志条目在轮换之前应增长多少。
SystemMaxFiles=
和RuntimeMaxFiles=
:控制要保留的日志文件的最大数量。