2011-10-12 9 views
2

Log4jとそのSyslogAppenderを使用してLinux syslogにメッセージを書きます。出力されたメッセージは、次のようになります。Log4jによってLinux syslogに書き込まれたメッセージのlocalhost.localdomainを変更するには

Oct 12 09:06:03 localhost.localdomain 3364 [Thread-5] INFO TEST MESSAGE MyApplicationLogger - This is my message 

私はアプリケーションを実行しているサーバーの名前でlocalhost.localdomainを交換したいと思いますが、方法を見つけ出すように見えることはできません。コンピュータ名がサーバー上で構成されており、hostnameコマンドには、以下を返します:

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 
server12 

私はしかしそれに気づくんhostsファイルの最初の行は

127.0.0.1 localhost.localdomain localhost 

ですが、私はこれを変更することを躊躇しています。

答えて

1

私はそれを修正する方法を考え出したので、私は同様のままかもしれません他の人が同じ問題に直面している場合のためにここに解決策を示します。プロパティファイルで

、これを置く:

log4j.appender.SyslogAppender.syslogHost=server12 

それは動作しますが、localhostのは私の仕事の代わりにサーバー名を使用して、なぜわかりません。

+0

このソリューションをご利用いただきありがとうございます。私たちは仮想IP( "VIP")を使用していて、ホスト名をそのまま残したいと思いますが、残念なことにlog4jはそれをIPアドレスに解決します。それでも、少なくともこの情報でVIPの現在のIPアドレスを設定することができました。 – KomodoDave

3

この問題は、マシンが自分のホスト名を知らないためです。 これは、特権のないユーザーとしてコマンドhostnameを実行することで実証できます。

あなたがroot権限を持っているなら、あなたは正確に(どこかの/ etcにある設定ファイルを設定する必要があります再起動後もこの変更を永続的なものにするに

$ hostname myServersHostname 

man page

を使用して、ホスト名を設定することができますあなたのディストリビューションに依存します)。

  • のDebian/Ubuntuの:の/ etc /ホスト名
  • RedHatの/ CentOSの/ Fedoraの:の/ etc/sysconfig/networkファイル
4

これは、何が必要です:

log4j.appender.SyslogAppender.header = true 
0

あなたが「ハードコード」のlog4jプロパティまたはXMLファイル内のホスト名にしたくない場合は、最善の解決策は、dtylerによって提案されたものを組み合わせたものですおよびyegor256。ホスト名が正しく設定されていることを確認してから、log4j.xmlにlog4j.appender.SyslogAppender.header = trueまたは<param name="Header" value="true"/>を使用してください。