我将来自几台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将是local0
到local7
。
当你指定一个级别,比如info
,默认情况下,它表示规则将匹配的最低级别。
阅读更多: