我需要为不同的标记设置不同的日志格式。这两个日志属于同一个日志级别(错误),并且会记录在同一个文件中。 任何人都可以告诉我这应该是什么样的理想方式。正在使用的记录器是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>
答案 0 :(得分:0)
您应该使用单个Appender并使用PatternSelector。见http://logging.apache.org/log4j/2.x/manual/layouts.html#Pattern_Selectors。 MarkerPatternSelector完全符合您的要求。