【发布时间】:2019-11-13 23:30:06
【问题描述】:
如果您有多个 1 方 log4j2 配置,请在 src/main/resources 中说明。如何将日志记录配置设置为彼此分开,以免它们发生冲突。
我现在的想法是有两个不同的文件配置,不定义ROOT节点并指定不同的包。
我也尝试过拥有两个不同的 conf 文件。 log4j2.xml 和 log4j2-test.xml 但这仅适用于两个库。 log4j2-myapp.xml 工作吗?文档说使用系统属性 log4j.file= 但这不起作用,因为我想要两个配置文件。此外,有时我们无法控制此 Web 容器的系统属性。
如何解决多个log4j2配置的问题。
Log4j2 版本、java8、websphere 容器、多个 1stparty jar。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Properties>
<Property name="logserverdir">defaultvm2</Property>
</Properties>
<!-- Log4j2 configuration, use with greylog -->
<Appenders>
<RollingFile name="MainApiCommonsAppenderApi" fileName="/usr/local/pfs/logs/defaultvm2/log4j_api.log"
filePattern="/usr/local/pfs/logs/defaultvm2/log4j_api.%i.log">
<PatternLayout pattern="%d [%t] -- [%X{mdcLogSessionId} - %-5p - %C{1}.%M(%F:%L) - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="140MB" />
</Policies>
<DefaultRolloverStrategy max="5" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.primerica.pfn" level="info" additivity="false">
<AppenderRef ref="MainApiCommonsAppenderApi" />
<AppenderRef ref="GraylogCommons" />
</Logger>
<Logger name="org.springframework" level="debug" additivity="false">
<AppenderRef ref="MainApiCommonsAppenderApi" />
<AppenderRef ref="GraylogCommons" />
</Logger>
</Loggers>
</Configuration>
【问题讨论】:
-
有点不清楚,因为单个应用程序使用单个日志记录属性。您希望多个日志记录配置文件如何在一个应用程序范围内覆盖它们的属性?
-
XInclude是否可以工作,以便您可以提供主配置文件并包含其他配置文件。这将允许您不必担心其他文件是否更新,因为您只需包含它们。 -
单个应用程序使用多个日志记录属性。我不希望它们相互覆盖。如果有就好了: lib1:log4j2-lib1.xml , lib2: log4j2-lib2.xml
-
XInclude 可能会起作用
-
您可以考虑使用composite configuration。一般来说,我的想法是一个应用程序作为一个整体应该定义它的日志配置而不是单个库。库不知道它是如何被使用的,应用程序确实知道它是如何使用库的。也许应用程序 A 使用类 R 和 S 并希望查看来自它们的详细消息,而应用程序 B 使用类 X 和 Y 并且需要记录来自这些的消息。