我正在使用 logrotate 来轮换我的日志文件。
我已将其设置为每周创建新的日志文件。
不过我希望它先将日志文件作为附件发送给我。
该/var/log/httpd
文件当前包含:
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
firstaction
{I think I need to mail the logfiles here???}
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
我可以做我想做的事吗?
如果是的话,我需要添加什么firstaction
才能:
- 使用 sendmail将日志文件 (
/var/log/httpd/*log
) 作为附件发送给我 - 在邮件中添加一些主题,例如:
HTTPD logfiles {week #}
答案1
如果我理解正确的话,有一个 logrotate 选项可以满足您的要求。只需将其添加为配置选项之一,如下所示:mail [email protected]
/var/log/httpd/*log {
mail [email protected]
...
这将通过邮件向您发送即将轮换的日志文件。
也许您尝试过这种方法,但并没有达到您的预期效果。在这种情况下,我认为您大部分情况下都走在正确的轨道上。但是,当您尝试发送带有附件的邮件时,直接调用 sendmail 并不是正确的方法。引用sendmail 常见问题解答:
如何使用 sendmail 创建附件?
您不需要。Sendmail 是邮件传输代理 (MTA)。创建电子邮件消息(包括添加附件或签名)是邮件用户代理 (MUA) 的功能。一些流行的 MUA 包括 mutt、elm、exmh、Netscape、Eudora 和 Pine。一些专用软件包(metamail、一些 Perl 模块等)也可用于创建带附件的消息。
如果您有邮件用户代理杂种狗(或者可以安装它),它应该能够做你想做的事。尝试这样做:
/var/log/httpd/*log {
firstaction
echo | mutt -s "Log files for `date`" [email protected] -a /var/log/httpd/*log
endscript
...
还请注意,在示例配置文件中您缺少endscript
命令firstaction
。