logrotate 是否只在 /var/log 内的日志中起作用?

logrotate 是否只在 /var/log 内的日志中起作用?

我目前systemd service在一台将和Ubuntu 18.04重定向到自定义路径的机器上有一个:StandardOuputStandardError

StandardError=file:/opt/my_tests/my.log
StandardOutput=file:/opt/my_test/my.log

但我想添加日志轮换并避免将来出现磁盘空间问题。我发现实现此目的的方法是使用logrotate,因为另一个解决方案(journald.conf)要求我将日志放在/var/log/journal/

对以下文件进行一些测试后/etc/logrotate.d/

/opt/my_tests/my.log {
    missingok
    rotate 10
    maxsize 200k
    copytruncate
    compress
    notifempty
    create 0640 my_user my_user
    dateext
    dateformat -%Y_%m_%d-%H_%M_%S
    postrotate
        echo "A rotation took place"
    endscript
}

我只能在sudo logrotate /etc/logrotate.conf --force独立于大小或时间标志(例如hourlydailymaxsize)运行时进行旋转。我这里漏掉了什么吗?还有其他解决方案可以在自定义路径上进行日志旋转吗?

输出sudo logrotate -v /etc/logrotate.d/my_conf为:

rotating pattern: /opt/my_tests/my.log  1048576 bytes (10 rotations)
empty log files are not rotated, log files >= 204800 are rotated earlier, old logs are removed
considering log /opt/my_tests/my.log
  Now: 2020-10-23 21:00
  Last rotated at 2020-10-27 18:13
  log needs rotating
rotating log /opt/my_tests/my.log, log->rotateCount is 10
Converted ' -%Y_%m_%d-%H_%M_%S' -> '-%Y_%m_%d-%H_%M_%S'
dateext suffix '-2020_10_23-21_00_30'
glob pattern '-[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]-[0-9][0-9]_[0-9][0-9]_[0-9][0-9]'
copying /opt/my_tests/my.log to /opt/my_tests/my.log.log-2020_10_23-21_00_30
truncating /opt/my_tests/my.log.log
running postrotate script
A rotation took place
compressing log with: /bin/gzip
removing old log /opt/my_tests/my.log.log-2020_10_26-20_32_32.gz

答案1

如果它使用 执行旋转--force,则意味着您的配置很好,但logrotate不认为该文件此时需要旋转。

您可以运行logrotate -v /etc/logrotate.d/[your conf file],它应该会提供一条消息,说明跳过该文件的原因。如果没有,logrotate -d则会提供额外的调试信息,这些信息可能有助于查明原因。

但是,查看您发布的配置,我猜测最可能的原因是实际上没有写入任何内容/opt/my_tests/my.log(即,文件大小为 0),并且您的配置状态为notifempty,因此如果文件大小为 0,则会跳过该文件。

答案2

  • logrotate 可以在您配置的任何目录上运行,不仅仅是/var/logs
  • 您的配置缺少句点什么时候应该发生旋转(daily,,weekly...)
  • 在 Ubuntu 上,logrotate 任务由 触发cron。因此,看看/etc/cron.d/它何时运行
  • 根据您的配置,logrotate 可能需要几天时间才能真正轮换文件

相关内容