Logrotate 错误:未找到 /var/log/apache*/*error.log 文件

Logrotate 错误:未找到 /var/log/apache*/*error.log 文件

Logrotate 每天运行并通过电子邮件向我发送报告。这一直运行良好,但现在我每天还会收到以下电子邮件:

Date: Mon, 10 Aug 2009 04:02:08 +0100
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@dev> run-parts /etc/cron.daily
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/etc/cron.daily/logrotate:

ERROR  No file found for /var/log/apache*/*error.log
ERROR  No file found for /home/www/myhomepage/error.log
ERROR  No file found for /var/www/*/logs/access_log

上述日志目录不存在,我不知道为什么 logrotate 突然决定包含它们。我认为这个问题是在我安装 fail2ban 后开始的。

/etc/cron.daily/logrotate 包含:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/etc/logrotate.conf 包含:

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

/etc/logrotate.d/httpd 包含:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

我不确定 /var/log/apache*/ 的引用在哪里error.log,/home/www/myhomepage/error.log 或 /var/www//logs/access_log 是。

有任何想法吗?

谢谢,帕特里克

编辑感谢您的回复,以下是我尝试过的:

vatican:~# grep myhomepage /etc/logrotate.d/*
vatican:~# grep apache /etc/logrotate.d/*
vatican:~# grep www /etc/logrotate.d/*

没有返回任何内容!这很奇怪!

编辑 再次感谢您的回复。问题毕竟是由 fail2ban 引起的。引用是在 jail.conf 文件中进行的。我已更正这些引用,问题已解决。

答案1

好的,这似乎与 logrotate 无关。我认为您看到的错误来自 fail2ban,它正在寻找这些文件。尝试在 /etc/logrotate.d/fail2ban 中手动运行来自 fail2ban 的后记(或类似的东西),您将看到错误。

答案2

扩展 HD 的评论:您需要更仔细地查看 logrotate.d 目录。

许多软件包直接在其中安装 logrotate 配置文件。该目录下的任何 logrotate 配置文件都将作为 cron.daily logrotate 作业的一部分运行。

查看该目录,看看是否无法根据名称找到有问题的文件。如果找不到,grep 语句可能是最好的选择:

grep myhomepage /etc/logrotate.d/*

根据需要编辑或删除您发现的文件。

如果您不确定这些文件来自哪里,以下命令(在 Debian/Ubuntu 上)将告诉您:

dpkg -S /etc/logrotate.d/FILENAME

在基于 RPM 的系统上,以下命令应该告诉您哪个包安装了该文件:

rpm -qf /etc/logrotate.d/FILENAME

答案3

被调用的命令是:

/usr/sbin/logrotate /etc/logrotate.conf

我可能会查看:

/etc/logrotate.conf

相关内容