2016-06-19 38 views
1

Syslog経由でログメッセージを送信するためにLog4j 2.6.1を使用しようとしています。 私はそれらをファイルまたはコンソールに印刷できますが、私のSyslogサーバーでそれらを捕まえることや、送信されていることを確認できません。Java Log4j2 Syslog Appender

私が使用している設定ファイルは、私がオンライン見つけた1に基づいており、私はBSDのSyslog形式またはRFC 5424.

私は、Windowsサーバー上で実行しているを使用する必要があるかどうかわからないんだけど(Syslogサーバは同じマシン上にあります)。ここで

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="MyApp" packages=""> 
    <Appenders> 
    <Syslog name="syslogAppender" format="RFC5424" host="localhost" newLine="true" port="514" protocol="UDP" appName="MyApp" 
     facility="USER" messageId="Audit" mdcId="mdc" id="App" 
     connectTimeoutMillis="1000" reconnectionDelayMillis="5000"/> 
    </Appenders> 
    <Loggers> 
    <Logger name="com.mycorp" level="info" /> 
     <Root level="error"> 
      <AppenderRef ref="syslogAppender"/> 
     </Root> 
    </Loggers> 
</Configuration> 

クラスは次のとおりです:

はここに私の設定ファイルです

import org.apache.logging.log4j.Logger; 
import org.apache.logging.log4j.LogManager; 
import java.io.*; 
import java.sql.SQLException; 

public class SyslogLogger 
{ 
    private static final Logger LOG = LogManager.getLogger(SyslogLogger.class); 

    public static void main (String[] args)throws IOException,SQLException 
    { 
     LOG.error("testing ERROR level"); 
     LOG.trace("exiting application"); 
    } 
} 

私が間違っているの何教えてください?

答えて

1

これは、Log4j 2 Jiraの問題追跡ツールでチケットを発行することをお勧めします。あなたはバグを発見したかもしれません。

0

私は同じ問題を抱えていた、しかし、私は、以下の点を考慮して、それを解決:

  1. は、各ログメッセージの最後に「\ 0」を追加し、それは私のログサーバに完全に関連して、サーバーの使用エリミネーターメッセージのために。
  2. 正しく

のsyslogアペンダの性質のために= "true" のようにsyslogのアペンダの仕事を "includeMDCを" プロパティを追加し、次の可能性をチェックする必要があります

  1. などforamtとしてSyslogサーバの設定(、プロトコルを、 MDCなど)
  2. サーバー入力形式に基づいてsyslogアペンダーのプロパティを変更する
関連する問題