无法启动轮换日志文件

无法启动轮换日志文件

我的每个系统日志文件(以及每个新的系统日志)都从以下字符串开始:

localhost rsyslogd: [origin software="rsyslogd" swVersion="8.2001.0" x-pid="451" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
localhost systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
localhost systemd[1]: logrotate.service: Failed with result 'exit-code'.
localhost systemd[1]: Failed to start Rotate log files.

我在 Google Cloud 上安装了 ubuntu 20 VM。如何修复此错误?谢谢。

upd:systemctl status logrotate.service 的输出

● logrotate.service - Rotate log files
     Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled)
     Active: inactive (dead)
TriggeredBy: ● logrotate.timer
       Docs: man:logrotate(8)
             man:logrotate.conf(5)

答案1

如果您的 Litespeed 日志位于 之外的位置/var/log,则日志轮换服务将无法对需要轮换的文件进行写访问。您有两个选项可供选择:

  1. 将您的 Litespeed 日志移动到目录中/var/log,例如/var/log/litespeed
  2. 更新logrotate.service文件,以便服务可以使用日志目录

选项 1 非常简单,所以我们只看第二项。您可以这样更新文件logrotate.service

  1. 打开终端(如果尚未打开)
  2. 打开logrotate.service文件为root
    sudo vi /lib/systemd/system/logrotate.service
    
    笔记:如果您愿意,请随意使用其他编辑器。
  3. 将以下行添加到文件末尾:
    ReadWritePaths=/usr/local/lsws/logs
    
  4. 保存文件
  5. 重启logrotate服务:
    sudo systemctl daemon-reload && systemctl start logrotate
    
    笔记:此命令没有输出。

为什么?

文件中logrotate.service有一行内容为ProtectSystem=fullProtectSystem设置为时full,它将所有内容挂载为只读除了系统中存储日志的目录,例如/var/log。通过添加其他目录,ReadWritePaths您可以允许服务无限制地使用这些位置。

如果你是真的有兴趣了解更多相关信息,文档详细分解了所有内容...尽管读起来相当枯燥。

相关内容