我有一个用于 cron 任务的 Docker 映像。这是 Dockerfile:
FROM php:8.0-fpm
RUN apt-get update
RUN apt-get install -y cron rsyslog
RUN touch /var/log/cron.log
RUN chmod 0777 /var/log/cron.log
COPY ./app /var/www/app
COPY crontab /etc/cron.d/crontab
RUN chmod 0644 /etc/cron.d/crontab
RUN crontab /etc/cron.d/crontab
COPY 02-cron.conf /etc/rsyslog.d/02-cron.conf
CMD service rsyslog start && service cron start && tail -f /dev/null
默认情况下,rsyslog 将 cron 记录到 /var/log/syslog。我想将 cron 记录到单独的文件 /var/log/cron.log 中。
rsyslog 的主配置 /etc/rsyslog.conf 有以下几行:
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
我想禁用将 cron 记录到 /var/log/syslog 并通过添加一个配置 /etc/rsyslog.d/02-cron.conf 来启用将其记录到 /var/log/cron.log:
*.*;cron,auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
但结果是 cron 记录到 /var/log/syslog 和 /var/log/cron.log。
答案1
您的配置中的行:
*.*;cron,auth,authpriv.none -/var/log/syslog
使它像这样:
*.*;cron.none,auth,authpriv.none -/var/log/syslog
停止cron
登录syslog
您还可以在日志-
路径前面添加破折号(),cron
以避免每次写入时刷新缓冲区。所以你的 cron 行变成:
cron.* -/var/log/cron.log