以下配置规则:
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
ftp.* /var/log/vsftpd.log
前两行的意思是,将所有内容(除了 auth 和 authpriv)记录到 syslog,并将它们记录到 auth.log。Cron 日志通过注释禁用,daemon.* 同时存在于 syslog 和 daemon.log 中。
ftp.* 记录到 syslog 但没有记录到 vsftpd.log,为什么?
路径前面的“-”是什么?
我阅读了手册页但找不到有关该信息。
答案1
ftp
如果您的平台没有定义 ,该工具最终将被忽略LOG_FTP
。这可能是原因——有趣的是,ftp
没有将 作为一个有效的工具包含在rsyslog.conf
手册页中,很可能是为了避免必须解释它。
* Mon Oct 12 18:29:44 CEST 1998: Martin Schulze <[email protected]>
* Added `ftp' facility which was introduced in glibc version 2.
* It's #ifdef'ed so won't harm with older libraries.
查看源代码,你可以看到发生这种情况的位置runtime/srutils.c
:
syslogName_t syslogFacNames[] = {
{"auth", LOG_AUTH},
{"authpriv", LOG_AUTHPRIV},
{"cron", LOG_CRON},
{"daemon", LOG_DAEMON},
{"kern", LOG_KERN},
{"lpr", LOG_LPR},
{"mail", LOG_MAIL},
{"mark", LOG_MARK}, /* INTERNAL */
{"news", LOG_NEWS},
{"security", LOG_AUTH}, /* DEPRECATED */
{"syslog", LOG_SYSLOG},
{"user", LOG_USER},
{"uucp", LOG_UUCP},
#if defined(LOG_FTP)
{"ftp", LOG_FTP},
#endif
{"local0", LOG_LOCAL0},
{"local1", LOG_LOCAL1},
{"local2", LOG_LOCAL2},
{"local3", LOG_LOCAL3},
{"local4", LOG_LOCAL4},
{"local5", LOG_LOCAL5},
{"local6", LOG_LOCAL6},
{"local7", LOG_LOCAL7},
{NULL, -1},
};
这种-
行为有点微妙。您需要三个 URL 才能了解完整情况。
简短版本:从 V3 开始,-
前缀本身指定是否希望文件省略来自磁盘同步,但这只有在启用同步后才有意义$ActionFileEnableSync on
。
如果您使用混合 syslog 守护程序环境,并且在服务器之间共享兼容配置的做法,那么在您的配置中包含语法仍然很有用。