Log4jのJavaプラグインはLog4jので、ログのあるlog4j.jarを得ることができSocketAppenderとSocketHubAppenderの一般シンプルなクラスタログの要約で使用使用。
設定を最小化
input {
log4j {
host=>"localhost"
port=>4560
}
}
output {
stdout {}
}
log4jのプラグインの設定ホストとポートは、ローカルホスト上のポート4560をLog4jのメッセージを受信することができるようになります。
この時点で、あなたはローカルホストSocketAppender的に出力ログメッセージをLog4jの場合、Logstashをキャプチャすることができ、参照プロファイルのlog4jは、次のとおりです。
<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j=" http://jakarta.apache.org/log4j/" >
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" >
<layout class="org.apache.log4j.PatternLayout" >
<param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" />
</layout>
</appender>
<appender name="socketAppender" class="org.apache.log4j.net.SocketAppender">
<param name="remoteHost" value="localhost" />
<param name="port" value="4560" />
<param name="Threshold" value="INFO" />
<param name="ReconnectionDelay" value="1000" />
<param name="LocationInfo" value="true" />
</appender>
<root>
<priority value="info" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="sockethubAppender" />
</root>
</log4j:configuration>
詳細な重要なパラメータ
モードlogstashモード、オプションの「サーバー」または「クライアント」、デフォルトは「サーバー」です
logstashサーバは、log4jのホストを生成したログメッセージを受信したログサーバとして見られることです。
これは、要求のlog4jホストのイニシエータがログメッセージを返すように見えるクライアントTCP logstashです。
そのような「ローカルホスト」または「192.168.0.1」としてホストホストアドレス、文字列型、
サーバモードならば、それはホストアドレスを聞いています
クライアントモード場合は、ターゲット・アドレスが接続されています
ポートポート番号、型番、例えば4567または12345のような
サーバモードの場合、ポート番号を聞いています
もし、接続の宛先ポート番号であるクライアントモード、
秒data_timeoutタイムアウト。-1、決してタイムアウトに設定した場合、デフォルトは5です
TCP接続のアイドル、時間制限を超過した場合、接続を切断するか閉じます。
サーバーモード
ホストサーバとしてlogstashサーバモデルは、出力に次のように一般的に類似したクライアントとしてログメッセージJavaプログラム、次のとおりです。
次のようにLogstashプラグイン構成です。
input{
log4j {
mode => "server"
host => "localhost"#注意这里,这里是Logstash服务器的地址或者主机名
port => 4560
}
}
output{
stdout{}
}
Javaのプログラムのlog4jロギング設定ファイルを次のように
<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" >
<layout class="org.apache.log4j.PatternLayout" >
<param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" />
</layout>
</appender>
<appender name="socketAppender" class="org.apache.log4j.net.SocketAppender">
<param name="remoteHost" value="localhost" /><!-- 远程主机地址 -->
<param name="port" value="4560" /><!-- 远程主机端口 -->
<param name="Threshold" value="DEBUG" />
<param name="ReconnectionDelay" value="60000" />
<param name="LocationInfo" value="true" />
</appender>
<root>
<priority value="debug" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="socketAppender" />
</root>
</log4j:configuration>
またことに注意して、IPアドレスをローカルアドレスのみを聞いて、あなたはサーバモードを使用している場合、またはソケットをバインドすることはできません。
私自身のサーバアドレスが10.4.5.6であるたとえば、その後、私は10.4.5.7、リモートマシンをバインドする、次のエラーを報告します。
クライアント・モード
次のようにクライアントモードがクライアントとしてLogstashすることで、配置されているログJavaプログラムの出力を要求するためにホストに返されました:
次のようにlogstashは以下のとおりです。
input{
log4j {
mode => "client"
host => "10.4.5.6"
port => 9999
}
}
output{
stdout{}
}
このエンドのlog4j Javaプログラムの設定ファイルを次のように
<?xml version="1.0" encoding= "UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j=" http://jakarta.apache.org/log4j/" >
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender" >
<layout class="org.apache.log4j.PatternLayout" >
<param name="ConversionPattern" value="%d{yyyy/MM/dd-HH:mm:ss} >> %5p >> %t >> %l >> %m%n" />
</layout>
</appender>
<appender name="sockethubAppender" class="org.apache.log4j.net.SocketHubAppender">
<param name="port" value="9999" />
<param name="Threshold" value="INFO" />
<param name="LocationInfo" value="true" />
</appender>
<root>
<priority value="info" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="sockethubAppender" />
</root>
</log4j:configuration>
スプレッド
実際には、ビューのlogstashソースポイントから、彼らの異なる仕事を理解することが良いです!
サーバモードは、logstashがターゲットホストとポートを聴くための新しいスレッドを作成するかどうかを確認でき、クライアントモードは、それがTCP接続の作成がある場合。
対応するために、サーバーモードがSocketAppenderモードをlog4jのに対応し、クライアントモードはSocketHubAppenderのlog4jのモードに対応します。
注意:
それはサーバモードの場合は1に、モニターは、ホストアドレスのIPアドレスであるローカルホストが他のホストからの情報を受信しないにつながる書き込む必要があります。
2クライアントモード、モニタポートが4560でない場合
約Log4jのプラグイン含有量は概ね同様です。
参照
[1] logstashのlog4jのプラグイン:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html
【2】のlog4j SocketAppender:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.html
【3】のlog4j SocketHubAppender:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketHubAppender.html
ます。https://my.oschina.net/u/204616/blog/545317で再現