Как я могу изменить localhost.localdomain в сообщениях, написанных Log4j в системный журнал Linux - PullRequest
2 голосов
/ 12 октября 2011

Я пишу сообщения в системный журнал Linux, используя Log4j и его SyslogAppender. Выводимые сообщения выглядят так:

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

Однако я не решаюсь это изменить.

Ответы [ 4 ]

4 голосов
/ 13 ноября 2012

Это то, что вам нужно:

log4j.appender.SyslogAppender.header = true
3 голосов
/ 12 октября 2011

Эта проблема связана с тем, что ваша машина не знает своего собственного имени хоста. Это можно продемонстрировать, выполнив команду hostname как непривилегированный пользователь.

Если у вас есть привилегии root, вы можете установить имя хоста с помощью

$ hostname myServersHostname

справочная страница

Чтобы сделать это изменение постоянным при перезагрузке, вам нужно установить файл конфигурации где-нибудь в / etc (именно тот, который зависит от вашего дистрибутива).

  • Debian / ubuntu: / etc / hostname
  • Redhat / CentOS / Fedora: / etc / sysconfig / network
1 голос
/ 18 октября 2011

Я понял, как это исправить, так что я мог бы также оставить решение здесь на тот случай, если другие люди столкнутся с такой же проблемой.

В файле свойств поместите это:1005 * Не уверен, почему это работает, но использование имени сервера вместо localhost у меня сработало.

0 голосов
/ 13 марта 2015

Если вы не хотите «жестко кодировать» имя хоста в свойствах log4j или XML-файле, лучшее решение - это сочетание того, что предлагают dtyler и yegor256.Убедитесь, что ваше имя хоста установлено правильно, а затем используйте log4j.appender.SyslogAppender.header = true или <param name="Header" value="true"/> в вашем log4j.xml

...