Java 如何更改Log4j写入Linux系统日志的消息中的localhost.localdomain
我正在使用Log4j及其SyslogAppender向Linux系统日志写入消息。输出的消息如下所示:Java 如何更改Log4j写入Linux系统日志的消息中的localhost.localdomain,java,linux,log4j,syslog,Java,Linux,Log4j,Syslog,我正在使用Log4j及其SyslogAppender向Linux系统日志写入消息。输出的消息如下所示: Oct 12 09:06:03 localhost.localdomain 3364 [Thread-5] INFO TEST MESSAGE MyApplicationLogger - This is my message 我想用运行应用程序的服务器的名称替换localhost.localdomain,但似乎不知道如何替换。这是我的配置文件,以防有用: log4j.logger.MyApp
Oct 12 09:06:03 localhost.localdomain 3364 [Thread-5] INFO TEST MESSAGE MyApplicationLogger - This is my message
我想用运行应用程序的服务器的名称替换localhost.localdomain,但似乎不知道如何替换。这是我的配置文件,以防有用:
log4j.logger.MyApplicationLogger=INFO, SyslogAppender
log4j.appender.SyslogAppender=org.apache.log4j.net.SyslogAppender
log4j.appender.SyslogAppender.syslogHost=localhost
log4j.appender.SyslogAppender.Facility=USER
log4j.appender.SyslogAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.SyslogAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n
log4j.appender.SyslogAppender.source=My Application
编辑:在服务器上配置计算机名,hostname命令返回以下内容:
$ hostname
server12
但是我注意到hosts文件的第一行是
127.0.0.1 localhost.localdomain localhost
但是,我不太愿意更改此设置。此问题是因为您的计算机不知道自己的主机名。 这可以通过以非特权用户身份运行命令
hostname
来演示
如果您具有root权限,则可以使用
$ hostname myServersHostname
要使此更改在重新启动期间永久化,您需要在/etc中的某个位置设置一个配置文件(具体取决于您的发行版)
- Debian/ubuntu:/etc/hostname
- Redhat/CentOS/Fedora:/etc/sysconfig/network
log4j.appender.SyslogAppender.syslogHost=server12
不确定它为什么会工作,但使用服务器名而不是本地主机对我来说很有效。这就是您需要的:
log4j.appender.SyslogAppender.header = true
如果您不想在log4j属性或XML文件中对主机名进行“硬编码”,那么最好的解决方案是结合dtyler和yegor256的建议。确保主机名设置正确,然后在log4j.xml中使用
log4j.appender.SyslogAppender.header=true
或
,感谢您分享此解决方案。我们使用虚拟IP(“VIP”),希望主机名保持原样,但不幸的是,log4j将其解析为IP地址。不过,至少有了这些信息,我们可以将其配置为VIP的当前IP地址。