如何在 IDE 中使用一个 log4j2 配置文件进行运行时,使用另一个 log4j2 配置文件进行打包/部署?

Posted

技术标签:

【中文标题】如何在 IDE 中使用一个 log4j2 配置文件进行运行时,使用另一个 log4j2 配置文件进行打包/部署?【英文标题】:How to use one log4j2 configuration file for runtime in IDE and another log4j2 configuration file for packaging/deployment? 【发布时间】:2022-01-20 06:32:44 【问题描述】:

使用 Eclipse 06-2021、Maven、log4j2。

我正在使用 log4j2 框架来登录我的应用程序。我在 log4j2.properties 文件的资源文件夹中创建了配置。

我在那里定义了一些记录器及其级别:

...
logger.filelogconvert.appenderRef = FileLogConvert
logger.fileloggeneral.appenderRef = FileLogGeneral
rootLogger.appenderRef.console.ref = FileLogGeneral

logger.fileloggeneral.level = warn
rootLogger.level = warn

但是,当我想部署应用程序时,我需要重写此文件,因为我需要将级别从 info 更改为 warn 或更改 appender/logger 引用。

【问题讨论】:

【参考方案1】:

使用 log4j2-test.properties 文件:https://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration

...
logger.filelogconvert.appenderRef = Console
logger.fileloggeneral.appenderRef = Console
rootLogger.appenderRef.console.ref = Console

logger.fileloggeneral.level = info
rootLogger.level = info

然后在jar插件的pom.xml中排除:

<build>
    ...
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
            <excludes>
                <exclude>log4j2-test.properties</exclude>
            </excludes>
        </configuration>
    </plugin>
    ...
</build>

当然还有其他几种方法可以实现这一点。

【讨论】:

以上是关于如何在 IDE 中使用一个 log4j2 配置文件进行运行时,使用另一个 log4j2 配置文件进行打包/部署?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 应用程序中指定 Log4j2 配置文件

Log4j2 配置 - 找不到 log4j2 配置文件

【日志】Log4j2配置

如何设置log4j2 asyncQueueFullPolicy

Log4j2 进阶使用

如何使用 Log4J2 将自定义级别记录到文件中?