gpt4 book ai didi

java - Log4j2 套接字附加器 "connect java.net.ConnectException: Connection refused: connect"

转载 作者:行者123 更新时间:2023-12-01 16:09:26 27 4
gpt4 key购买 nike

我正在尝试将新的 log4j2 与 Socket Appender 一起使用,但我有点不走运。这是我的 XML 配置文件:

<?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 代码:

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的帖子,这里有必要吗?请注意,我只是想发送消息,此时并没有实际捕获它们。此外,我在 Syslog Adapter 方面也遇到了类似的问题。

最佳答案

您需要此客户端的服务器端,将事件记录到套接字附加程序。你的服务器端看起来像:

public static void main(String args[])
{
TcpSocketServer server = null;
try {
server = new TcpSocketServer(9600,new ObjectInputStreamLogEventBridge());
}
catch (IOException e)
{
e.printStackTrace();
}
server.run();
}

这里,Tcp 套接字在 9600 上打开,并且只要该服务器运行,就会一直监听日志事件。您还需要与此服务器对应的 log4j2 配置。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyAppServer" packages="">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console
</Appenders>
<Loggers>
<Logger name="com.mycorp" level="info" />
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

现在,由 com.mycorp 子级的任何记录器写入的所有日志事件都将附加到服务器运行的控制台。

希望有帮助。

关于java - Log4j2 套接字附加器 "connect java.net.ConnectException: Connection refused: connect",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com