了解syslog conf – 定位特定types/日志标记

我将来自几台Docker容器的日志文件合并到主机上,并向他们发送远程日志logging服务。 我只是将输出redirect到logging器并对其进行标记:

docker-compose logs 2>&1 | logger -t deviant 

这可以通过以下方式轻松configuration:

 *.* @remote_service:remote_port 

但是,当我只想将redirect日志发送到远程服务时, *.*匹配来自主机的每种日志。

这里是我想要捕获的日志的一个例子:

 Apr 08 08:55:04 calvin.local deviant: proxy_1 | 192.168.59.3 - - [08/Apr/2015:15:55:04 +0000] "stuff here" 

注意它包含calvin.local deviant

那些包含deviant是我唯一想要的。 我试图指定这样的日志条目:

*deviant*

…并重新开始logging…但我仍然看到我的远程日志中的所有条目(不只是标记为deviant )。 为什么?

syslog.conf您只能根据给定的设施和消息级别分配一个操作。

logger -t [tag]指定的logger -t [tag]不能用于通过syslog标识消息。 但是,您可以使用logger -p [facility.level]'选项设置自定义设施和级别,例如:

 logger -t deviant -p local3.info 

然后在syslog.conf中,您可以捕获并redirect这些消息:

 local3.info @remote_service:remote_port 

尝试find一个不被任何其他服务使用的设施。 好的select将是local0local7

当你指定一个级别,比如info ,默认情况下,它表示规则将匹配的最低级别。

阅读更多:

  • 人logging器
  • man syslog.conf