gpt4 book ai didi

java - log4j2 外部库日志记录到单独的文件中

转载 作者:行者123 更新时间:2023-11-30 06:19:27 24 4
gpt4 key购买 nike

我使用带有路由附加器和包装器的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>

问题是,我在第二条 route 获取外部库日志(那些没有附加程序的日志)和我的项目日志,尽管我只想要外部日志。

最佳答案

我建议使用如下配置 -

<Configuration status="WARN">
<Appenders>

<RollingFile name="RollingFile"
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>

<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>
</Appenders>
<Loggers>
<Logger name="application.package" level="info" additivity="false">
<appender-ref ref="RollingFile" />
</Logger>
<Root level="info" additivity="false">
<appender-ref ref="Rolling-default" />
</Root>
</Loggers>
</Configuration>

在此配置中,有 2 个记录器。一个记录器适用于具有根包名称 - application.package 的应用程序。该包应包含应用程序的所有子包和类。它将使用 RollingFile Appender 进行日志记录。

另一个是Root记录器,可用于记录外部库,即不在application.package中的类。它将使用 Rolling-default Appender

在上面的配置中,您通过上下文查找来设置fileName,因此您必须在开始时设置上下文值,否则会出现错误。

关于java - log4j2 外部库日志记录到单独的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48498963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com