log4j2 xml配置日志到2个文件

时间:2015-09-22 16:53:53

标签: java logging configuration log4j2

任何人都可以看到这个xml配置有什么问题吗?它设置了2个不同的日志文件,然后将跟踪记录到1个文件,将信息记录到另一个文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingRandomAccessFile name="LogTrace" fileName="../logs/Trace.log" filePattern="../logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="25 MB"/>
            </Policies>
        </RollingRandomAccessFile>
        <RollingRandomAccessFile name="LogInfo" fileName="../logs/Info.log" filePattern="../logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="25 MB"/>
            </Policies>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="monitor" level="info">
            <AppenderRef ref="LogInfo" level="info"/>   
        </Logger>
        <Root level="trace">
            <AppenderRef ref="LogTrace" level="trace"/>
        </Root>
    </Loggers>
</Configuration>

LogTrace正在运行但不是LogInfo ...

2 个答案:

答案 0 :(得分:1)

在您的代码中,您是否使用这样的监视器记录器:

Logger logger = LogManager.getLogger("monitor");
logger.info("test info message");

上面应该有效,因为你的配置声明信息级记录器的名称为&#34; monitor&#34;。

答案 1 :(得分:0)

使用下面的配置以及Remko在他的回答中提供的代码完全符合我的要求:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingRandomAccessFile name="LogTrace" fileName="../logs/Trace.log" filePattern="../logs/$${date:yyyy-MM}/tracelog-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="25 MB"/>
            </Policies>
        </RollingRandomAccessFile>
        <RollingRandomAccessFile name="LogInfo" fileName="../logs/Info.log" filePattern="../logs/$${date:yyyy-MM}/infolog-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %m %ex%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="25 MB"/>
            </Policies>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="monitor" level="all">
            <AppenderRef ref="LogInfo" level="info"/>
            <AppenderRef ref="LogTrace" level="trace"/>
        </Logger>
    </Loggers>
</Configuration>

它就像它可以一样简单......一旦你花了几天的时间考虑各种配置选项!