Hai*_* Li 1 java logging log4j2
我在我的项目中使用 log4j2,比如控制塔。并使用一些自定义日志附加程序来发送 websocket 事件、snmp 陷阱事件、插入到数据库。
我想向自定义日志附加程序发送更多信息,例如错误代码、源节点、snmp Oid、作业 ID 等...
使用 log4j2,有没有办法向日志附加程序发送更多信息?
像这样:
记录部分:logger.info(customObject);
snmp追加器:从customObject获取oid,从customObject获取消息
websocketappender:从customObject获取jobid,从customObject获取消息
数据库appender:从customObject获取错误代码,从customObject获取消息
抱歉我的英语不好。任何帮助将不胜感激。
我找到了解决方案。log4j2有消息接口。我可以实现这个接口来发送自定义信息。就像
public class CustomLogMessage implements Message {
private String oid;
private long errorCode;
private String msg;
....
}
Run Code Online (Sandbox Code Playgroud)
在自定义日志附加程序中,我可以将消息投射到 CustomLogMessage 并获取信息。就像
@Override
public void append(LogEvent event) {
Message message = event.getMessage();
if(message instanceof CustomLogMessage) {
CustomLogMessage customLogMessage = (CustomLogMessage) message;
System.out.println(customLogMessage.getOid());
System.out.println(customLogMessage.getErrorCode());
System.out.println(customLogMessage.getFormattedMessage());
}
}
Run Code Online (Sandbox Code Playgroud)