以下是我的/etc/syslog-ng/syslog-ng.conf
与login到文件debug.log
相关的一些内容
source s_sys {file(“/ proc / kmsg”log_prefix(“kernel:”)); unix-stream(“/ dev / log”); 内部(); #udp(ip(0.0.0.0)port(514)); };
destination d_mesg {file(“/ tmp / log / debug.log”); };
filterf_filter2 {级别(info..emerg),而不是设施(邮件,authpriv,cron); };
- 如何创build日志服务器而不影响Web服务器?
- 通过“打开Communicatorlogin”收集哪些数据?
- iptableslogging来自外部的数据包
- 在不使用用户帐户的情况下了解用户身份的可能选项
- 更改ClamAV日志文件的位置
log {source(s_sys); 滤波器(f_filter2); 目的地(d_mesg); };
我想把你的注意力放在包含“filter”的行上。 在那里你可以看到我从mail
, authpriv
和cron
筛选出日志。 据我所知, mail
, authpriv
和cron
是syslog的预定义工具。
我的查询是:
我写了一个名为“pm”的守护进程,它也使用syslog API进行日志logging。 现在无论我的守护进程日志如何,进入文件/tmp/log/debug.log
如上所见。 我想从/tmp/log/debug.log
过滤掉“pm”的日志。 为了更清楚我想有像filter
filter f_filter2 {level(info..emerg)而不是facility(mail,authpriv,cron,pm); };
请注意:f_filter2与上面相比有所不同。
是否有可能做到这一点 ? 我怎样才能防止pm
日志进入/tmp/log/debug.log
?
我得到了答案。
我们可以使用filter关键字创buildfilter:
filter <filtername> { expression; };
expression式是一个简单的布尔expression式。 您可以使用“和”,“或”和“不”来连接内置函数。 函数可以是以下之一:
设施(逗号分隔设施名称列表)
级别(逗号分隔的优先级列表或以“..”分隔的范围)
program(regexp to match program name)
主机(正则expression式匹配程序名)
匹配(正则expression式匹配程序名)
所以,如果我们想要添加自己的程序,例如“pm”,就可以像这样使用它:
过滤f_filter2 {level(info..emerg)而不是facility(mail,authpriv,cron)和program(pm); };
如果我们想过滤掉“pm”的日志消息,使用如下filter:
filter f_filter2 {level(info..emerg)而不是facility(mail,authpriv,cron)而不是program(pm); };