I’m writing messages to the Linux syslog using Log4j and its SyslogAppender. The outputted messages look like this:
Oct 12 09:06:03 localhost.localdomain 3364 [Thread-5] INFO TEST MESSAGE MyApplicationLogger - This is my message
I would like to replace localhost.localdomain with the name of the server running the application but can’t seem to figure out how. Here’s my configuration file, in case it’s useful:
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
Edit: the computer name is configured on the server and the hostname command returns the following:
$ hostname
server12
I do notice however that the first line of the hosts file is
127.0.0.1 localhost.localdomain localhost
However I’m hesitant to change this.
I figured out how to fix it, so I might as well leave the solution here in case other people face the same problem.
In the properties file, put this:
Not sure why it works, but using the server name instead of localhost worked for me.