我有一个 Maven 项目,其中包含几个不同的模块(一个核心模块和一些其他处理各种功能的模块),我想使用 log4j2 设置不同的日志记录级别(例如:对于核心模块,我想有详细的日志(DEBUG ) 但对于其他人,我想保留最少的日志集 (INFO))。
项目结构如下所示:
project
+- root
+- pom.xml
+- module-core
| +- pom.xml
| +- src
| | +- main
| | +- java
| | +- resources
| | +- test
| | +- java
| +- target
+- module-A
| +- pom.xml
| +- src
| | +- main
| | +- java
| | +- test
| | +- java
| +- target
+- module-B
| +- pom.xml
| +- src
| | +- main
| | +- java
| | +- test
| | +- java
| +- target
Log4j2 依赖项放在根 pom.xml 文件中,并log4j2.xml
放在module-core
资源文件夹下。
是否可以在上述log4j2.xml
文件中自定义和指定所需的日志记录级别?
这是 log4j2.xml 内容:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<property name="filters">org.openqa,org.apache.maven,sun.reflect,java.lang.reflect,java.utils,org.testng</property>
<property name="logMsgPattern">%highlight{%-5p | %d{HH:mm:ss} |} (%F:%L) %highlight{| %M ||} %m%n%xEx{filters(${filters})}</property>
</properties>
<Appenders>
<File name="FILE" fileName="target/logs/logfile.log" append="true">
<PatternLayout pattern="%-5p | %d{HH:mm:ss} | (%F:%L) | %M - %m%n"/>
</File>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%-5p | %d{HH:mm:ss:fff} |} (%F:%L) %highlight{| %M ||} %m%n%xEx{filters(${filters})}"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO" additivity="false">
<AppenderRef level="INFO" ref="CONSOLE" />
</Root>
<Logger name="module-core.*" level="DEBUG" additivity="false">
<AppenderRef level="DEBUG" ref="CONSOLE" />
</Logger>
<Logger name="module-A.*" level="INFO" additivity="false">
<AppenderRef level="INFO" ref="CONSOLE" />
</Logger>
</Loggers>
问题在于,它Root level="INFO"
覆盖了模块核心的 Logger 部分,并在所有项目中不断显示 INFO 日志。
有没有办法忽略根级别部分并强制 log4j2 仅显示模块中我想要的部分的日志?
谢谢!