我正在尝试使用log4j2中的JMS将日志推送到ActiveMqueue。
我在log4j2.properites
中完成了这项工作<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="5">
<Appenders>
<RollingFile name="fishLogstash"
fileName="E:/xxx/log/xxx.server/xxxLogstash.log" append="false"
immediateFlush="false" bufferSize="1000"
filePattern="/soft/log/xxx.server/xxxx-%i.log">
<PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1} - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="100M" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
<JMS name="jmsQueue" destinationBindingName="logQueue"
factoryName="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
factoryBindingName="ConnectionFactory"
providerURL="tcp://localhost:61616">
<PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1} - %m%n" />
</JMS>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="fish" />
</Root>
</Loggers>
</Configuration>
在此之后,我想知道如何使用JMS appender登录我的java代码?如何检索这个特定的appender,有什么像
Logger log = Logger.getAppender("jmsQueue") ?
提前致谢。
答案 0 :(得分:1)
<强> 1 强>
在您的媒体资源文件中,有xml
个内容。所以我假设您正在尝试使用xml样式属性文件。如果是,请将您的属性文件重命名为 .xml
扩展名。例如。 log4j2.xml
。记得写一个支持log4j2的xml。可以找到示例here。
<强> 2 强>
在属性文件的name
部分中,将已定义的appender的AppenderRef
值提取为Loggers
。根据您的Appenders
部分,Loggers
部分可以是
<Loggers>
<Logger name="jmsLogger" level="warn">
<AppenderRef ref="jmsQueue" />
</Logger>
<Root level="warn">
<AppenderRef ref="fishLogstash" />
</Root>
</Loggers>
第3 强>
在您的代码中,按如下方式获取JMS记录器:
Logger log = LogManager.getLogger("jmsLogger");
您可以使用log
变量记录任何内容。 E.g。
log.info("some message");
希望,这个答案可以帮到你。