log4j针对不同标记的不同日志格式

时间:2016-06-09 15:08:24

标签: logging log4j2

我需要为不同的标记设置不同的日志格式。这两个日志属于同一个日志级别(错误),并且会记录在同一个文件中。 任何人都可以告诉我这应该是什么样的理想方式。正在使用的记录器是log4j。

我现在只有解决方案是使用不同的appender来获得不同的格式。这是否有任何我不知道的副作用?

<Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile1" fileName="logs/app.log"
                 filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">

            <MarkerFilter marker="MARKERONE" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>%d %p %c{1.} [%t] %m%n</pattern>
            </PatternLayout>
            <TimeBasedTriggeringPolicy />
        </RollingFile>
        <RollingFile name="RollingFile2" fileName="logs/app.log"
                 filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
            <MarkerFilter marker="MARKERTWO" onMatch="ACCEPT" onMismatch="DENY"/>

            <PatternLayout>
                <pattern>%d %p %c{1.} [%t] %m%n</pattern>
            </PatternLayout>
            <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
            <AppenderRef ref="RollingFile1"/>
            <AppenderRef ref="RollingFile2"/>
        </Root>
    </Loggers>
</Configuration>

1 个答案:

答案 0 :(得分:0)

您应该使用单个Appender并使用PatternSelector。见http://logging.apache.org/log4j/2.x/manual/layouts.html#Pattern_Selectors。 MarkerPatternSelector完全符合您的要求。