The Gist
rsyslog在哪里获得%HOSTNAME%的值?
为什么Tomcat提供的应用程序具有正确的%HOSTNAME%,但具有相同配置的控制台应用程序具有“未知”作为主机名?
我们在EC2实例上使用rsyslog,我们正在尝试将日志发送到loggly。如果我tail -f
日志消息,我可以看到默认格式的日志,包括日期,主机名,标记和消息。
如果我使用logger "message"
,那么我在控制台和loggly中都会看到正确的日志条目。但是,如果java控制台应用程序记录一个事件,则控制台和loggly中的主机名都是“未知”。
奇怪的是,如果来自tomcat托管的Web应用程序,则rsyslog,syslog4j和log4j的相同配置会生成正确的日志条目。
rsyslog在哪里获得%HOSTNAME%的值?为什么Tomcat提供的应用程序具有正确的%HOSTNAME%,但具有相同配置的控制台应用程序具有“未知”作为主机名?
答案 0 :(得分:0)
如果rsyslog.conf中没有此行,请添加并重新启动rsyslog $ ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
答案 1 :(得分:0)
我想出来了。为了获取主机名,我需要将主机名映射到hosts文件中的ip地址。我实际上认为这已经发生了,但是当脚本运行以附加正确的主机条目时,IP地址是未知的,只有主机名被附加到文件。
我添加了正确的条目,主机名在rsyslog和loggly中按预期显示。
与此同时,我已将loggly格式从%HOSTNAME%更改为%$ myhostname%。这对我们来说很好,因为我们不是远程日志记录所以$ myhostname始终是正确的主机名。