web-dev-qa-db-ja.com

log4j:SocketAppenderの使用方法

SocketAppenderの使用方法について answer があります(分散システムからログを収集するために必要です)が、log4jは初めてで、そのサンプルコードの使用方法がわかりません。

おそらく私はそのようなlog4j-server.propertiesを持っているはずです:

log4j.appender.SERVER=org.Apache.log4j.net.SocketAppender
log4j.appender.SA.Port=4712
log4j.appender.SA.RemoteHost=loghost
log4j.appender.SA.ReconnectionDelay=10000

しかし、私はまだサーバーを起動する方法(この行を使用する方法)がわかりません

org.Apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

そして、最も重要なことは何ですか:Where\How私は私のログを見ることができますか?

20
alicjasalamon

以下を使用してサーバーを実行できます

Java -classpath log4j.jar org.Apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

SimpleSocketServerは、リモートSocketAppenderによって指定されたポート番号に送信されたログイベントを受信し、ログに記録しますローカルで生成されたかのようにlog4j-server.properties。ネットワークソケットを介してログイベントをパイプ処理するのではなく、元のプロセスで直接ログを記録する場合と同じように、関連するコンソール/ファイル/ローリングファイルアペンダーを構成し、それらを関連するロガーに接続するのはユーザー次第です。つまり現在、次のようなローカルログファイルを作成している場合:

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n

次に、送信側log4j.propertiesが単に言うように変更します

log4j.rootLogger=DEBUG, server
log4j.appender.server=org.Apache.log4j.net.SocketAppender
log4j.appender.server.Port=4712
log4j.appender.server.RemoteHost=loghost
log4j.appender.server.ReconnectionDelay=10000

サーバー側log4j-server.propertiesには、以前に送信側にあった定義が含まれています。

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n

特に、送信側のSocketAppenderにレイアウトを指定しても意味がないことに注意してください。ネットワークを通過するのはロギングイベントオブジェクト全体であり、レイアウトを行うのは受信側です。

45
Ian Roberts

サーバーを起動するには、コマンドプロンプトで次のコマンドを入力すると、サーバーが起動して実行されます。

Java -classpath C:Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar org.Apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

システムでlog4j.jarの正しいパスを指定することを忘れないでください。

0
madhu