【发布时间】:2017-12-21 16:12:34
【问题描述】:
所以这是我的配置文件或 log4j2.properties 文件
#Socket Appender
appender.socket.type=Socket
appender.socket.name=Socket_Appender
appender.socket.host=10.176.250.5
appender.socket.port=9000
appender.socket.layout.type=SerializedLayout
appender.socket.connectTimeoutMillis=2000
appender.socket.reconnectionDelayMillis=1000
appender.socket.protocol=TCP
#Loggers
logger.socket.name=atom
logger.socket.level=debug
logger.socket.appenderRefs=socket
logger.socket.appenderRef.socket.ref=Socket_Appender
接下来我有两个类 LogSender 和 LogListener
日志发送器
它的工作是通过 SocketAppender 发送日志。
通过 Stream 发送的是一个 LogEvent 对象。
public class LogSender {
public static final Logger LOG = LogManager.getLogger("atom");
public static void main(String[] args) {
LOG.trace("Error 1");
LOG.debug("Error 2");
LOG.info("Error 3");
LOG.warn("Error 4");
LOG.error("Error 5");
LOG.fatal("Error 6");
}
}
日志监听器
这应该接收通过流发送的 LogEvent 对象。 LogListener 正在使用 ObjectInputStream 并保存
LogEvent event = null;
private Socket socket1 = null;
private ServerSocket ss = null;
PrintWriter sspw=null;
ObjectInputStream objectInputStream = null;
try {
//Creating Socket and making it listen to a specific port, receiving through streams.
//Servers socket creation and waiting
ss = new ServerSocket(9000);
socket1 = ss.accept();
objectInputStream = new ObjectInputStream(new BufferedInputStream(socket1.getInputStream()));
event = (LogEvent) objectInputStream.readObject();
System.out.println(event.getLoggerName());
System.out.println(event.getLevel());
System.out.println(event.getMessage().getFormattedMessage());
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
输出
原子
调试
错误 2
Output 是预期的 Logger 的名称。这意味着我们正在接收一个 LogEvent 对象并能够提取记录器信息。我也能够收到实际的日志消息,但只弹出一个级别,即 DEBUG 级别。
我也想要所有其他级别。我该怎么做呢?
我对 Log4j2 很陌生,我觉得我在理解上错过了一些东西(只是一种直觉)。
【问题讨论】:
标签: java object logging log4j2