2
私はソケットアペンダーで新しいlog4j2を使用しようとしていますが、私は少し不運です。ここで Log4j2ソケットアペンダー "connect java.net.ConnectException:接続が拒否されました:接続"
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<Socket name="socket" host="localhost" port="9600">
<SerializedLayout />
</Socket>
</Appenders>
<Loggers>
<Logger name="com.mycorp" level="info" />
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="socket"/>
</Root>
</Loggers>
</Configuration>
は私のJavaコードです: はここに私のXML設定ファイルである
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import java.io.*;
import java.sql.SQLException;
import org.apache.logging.log4j.core.net.*;
public class SyslogLogger
{
private static final Logger LOG = LogManager.getLogger(SyslogLogger.class);
public static void main (String[] args)throws IOException,SQLException
{
LOG.info("commit(). Query {}", "commit(). Query {}");
}
}
私は取得していたコードを実行:
2016-06-29 17:13:42,426 main ERROR Unable to write to stream TCP:127.0.0.1:9600 for appender socket: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:127.0.0.1:9600 socket not available
2016-06-29 17:13:42,426 main ERROR An exception occurred processing Appender socket org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TCP:127.0.0.1:9600 socket not available
は、私が作成すべきとTCPソケットは明示的に? Log4j2は私にとってそれをしますか? Logstashについていくつかの記事を見ましたが、それはここに必要ですか? メッセージを送信するだけで、実際にメッセージを受け取ることはありません。 さらに、シスログアダプタでも同様の問題が発生しています。
ポート9600で何か聞いていますか? – Fildor
@Fildor、いいえ、それを送るために何か聞く必要がありますか? UDPを使用するSyslogまたはSocketAppenderにも同じことが適用されますか? –
UDPはコネクションレスで信頼性がありません。だから、誰かが耳を傾けるならば、世話をしなくても、ただネットに叫ぶことができます。しかし、TCPは何かが送信された場合でもそれが受信されていることを保証します。 – Fildor