【发布时间】:2018-01-29 10:21:59
【问题描述】:
我正在使用带有 Routing Appender 和包装器的 log4j2 xml 配置。我正在传递不同的附加程序以记录到项目不同部分的不同文件。我的配置看起来像这样。
<Configuration status="WARN">
<Appenders>
<Routing name="RoutingAppender">
<Routes pattern="${ctx:logFileName}">
<Route>
<RollingFile name="Rolling-${ctx:logFileName}"
fileName="logs/${ctx:logFileName}"
filePattern="logs/${ctx:logFileName}.%i.log.gz">
<PatternLayout pattern="d{ABSOLUTE} %level{length=5} [%thread] %logger{10}.%method:%line-%msg%n"/>
<SizeBasedTriggeringPolicy size="100 MB" />
</RollingFile>
</Route>
<!-- This route is chosen if ThreadContext has no value for key logFileName} -->
<Route key="$${ctx:logFileName}">
<RollingFile name="Rolling-default" fileName="logs/WITHOOUT-THREAD-CONTEXT.log"
filePattern="./logs/${date:yyyy-MM}/default-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<pattern>%d{ABSOLUTE} %level{length=5} [%thread] %logger{10}.%method:%line-%msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true" />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
</RollingFile>
</Route>
</Routes>
</Routing>
</Appenders>
问题是,我在第二条路线中获取外部库日志(那些没有附加程序的)以及我的项目日志,尽管我只想要外部日志。
【问题讨论】:
-
您应该尝试使用
RollingFile Appender配置Logger。这应该很容易做到。 -
@VikasSachdeva 你能解释一下吗?
-
如果您的应用程序日志和外部库日志都在第二条路线上,这意味着您没有清除设置上下文查找变量
logFileName值。 -
@VikasSachdeva 你的回答实际上解决了我的问题,我只是想赞成它。所以你可以转发它。附言是的,我正在清除 ThreadContext
-
好的。我已经转发了