【问题标题】:log4j different log format for different markerlog4j 不同标记的不同日志格式
【发布时间】:2016-06-09 15:08:23
【问题描述】:

我需要为不同的标记使用不同的日志格式。两个日志属于相同的日志级别(错误)并且将记录在同一个文件中。 谁能告诉我什么应该是理想的方式来做到这一点。使用的记录器是 log4j。

我现在唯一的解决方案是使用不同的附加程序来获取不同的格式。这有什么我不知道的副作用吗?

<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>

【问题讨论】:

    标签: logging log4j2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多