如何使用JMSAppender log4j2 JAVA

时间:2016-12-07 14:44:48

标签: java jms log4j2

我正在尝试使用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") ?

提前致谢。

1 个答案:

答案 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");

希望,这个答案可以帮到你。