rsyslog中%HOSTNAME%值为“unknown”

时间:2014-01-14 15:29:51

标签: java log4j rsyslog syslog4j

  

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%,但具有相同配置的控制台应用程序具有“未知”作为主机名?

2 个答案:

答案 0 :(得分:0)

如果rsyslog.conf中没有此行,请添加并重新启动rsyslog $ ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

答案 1 :(得分:0)

我想出来了。为了获取主机名,我需要将主机名映射到hosts文件中的ip地址。我实际上认为这已经发生了,但是当脚本运行以附加正确的主机条目时,IP地址是未知的,只有主机名被附加到文件。

我添加了正确的条目,主机名在rsyslog和loggly中按预期显示。

与此同时,我已将loggly格式从%HOSTNAME%更改为%$ myhostname%。这对我们来说很好,因为我们不是远程日志记录所以$ myhostname始终是正确的主机名。