有没有办法配置log4j2来读取Appender属性,例如spring bean?我很好奇,特别是在JmsAppender中,根据从数据库读取的参数而不是从JNDI上下文动态设置它的目标目标。
BR 佐尔坦
答案 0 :(得分:0)
最好的机会是扩展JMSAppender并覆盖记录器中的append方法。一个很好的例子是here
这种情况下,该类扩展并使用AMQ将这些消息发布到。您应该能够从数据库中扩展它并使用API来获取队列或主题的句柄并开始向其中添加消息。这假设您拥有正确的客户端库和权限,可以从数据库(在您的情况下)连接到消息传递提供程序(例如,在WMQ中,您可能需要QM名称,队列,主机,端口)。然后,可以在LOG4J2配置中使用扩展的JMS appender来发送日志消息。
答案 1 :(得分:0)
似乎我找到了一个非常有用的混合源,自定义JmsAppender结合弹簧上下文:
<Configuration>
<Appenders>
<OwnJmsAppender name="jmsQueue">
<PatternLayout pattern="%maxLen{%d{DEFAULT} [%p] - %m %xEx%n}{500}" />
</OwnJmsAppender>
</Appenders>
<Loggers>
<Logger name="com.your.package" level="info" additivity="false">
<AppenderRef ref="jmsQueue" />
</Logger>
</Loggers>
</Configuration>
}
从log4j2.xml调用它:
SELECT Date, Status FROM Table GROUP BY Date