rsyslog:操作路径 /ftp.* 前面加上“-”不记录

rsyslog:操作路径 /ftp.* 前面加上“-”不记录

以下配置规则:

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 守护程序环境,并且在服务器之间共享兼容配置的做法,那么在您的配置中包含语法仍然很有用。

相关内容