我正在合并主机上多个 docker 容器的日志文件,并将它们发送到远程日志服务。我只是将输出重定向到记录器并对其进行标记:
docker-compose logs 2>&1 | logger -t deviant
可以通过以下方式轻松配置:
*.* @remote_service:remote_port
但是,*.*
当我只想将重定向的日志发送到远程服务时,会匹配来自主机的各种日志。
这是我想要捕获的日志的示例:
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*
deviant
...并重新启动日志记录...但我仍然在远程日志中看到所有条目(不仅仅是标记的条目)。为什么?
答案1
您syslog.conf
只能根据给定的设施和消息级别分配操作。
指定的标签logger -t [tag]
不能用于 syslog 识别消息。但是,您可以使用-p [facility.level]'
选项来logger
设置自定义设施和级别,例如:
logger -t deviant -p local3.info
然后在 syslog.conf 中您可以捕获并重定向这些消息:
local3.info @remote_service:remote_port
尝试寻找其他服务未使用的设施。local0
到之一将是不错的选择local7
。
当你指定一个级别时,例如info
,默认情况下它表示规则将匹配的最低级别。
阅读更多: