java - 在 Maven 测试阶段禁用 Log4J 日志

标签 java maven logging build log4j

在 IDE 中进行开发时,跟踪和调试日志可能会有所帮助,但在构建过程中,我发现这些行非常令人不安,并且混淆了 maven 或其他构建工具打印的报告。

最好让 log4j 尊重像 -Dlog4j.rootLogger=OFF1 这样的系统属性,以便与 maven 或不需要更改项目文件。 我知道我可以指定 -Dlog4j.configuration=alternateconfig.props 2 但我在这里询问是否有人找到了在构建期间禁用日志记录的更智能方法过程中人工干预最少。 IE。一些 java 类将 maven 检测为禁用 log4j 或其他智能解决方案的调用者。

有什么提示吗?

注意事项:

[1]:已经试过了,还是不行。

[2]:这很好,但它似乎不适用于 maven(也许肯定会跳过它)

最佳答案

正如 @artbristol (对问题的评论)所解释的,这可以在surefire中进行配置。 在 pom.xml 中可以这样实现:

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <forkMode>always</forkMode>
                <systemPropertyVariables>
                    <log4j.configuration>file:${basedir}/etc/log4j-silent.properties</log4j.configuration>
                </systemPropertyVariables>
            </configuration>
        </plugin>

然后,让文件 ${basedir}/etc/log4j-silent.properties 具有以下设置就可以了:

log4j.rootLogger=OFF

在 maven 中测试运行期间 log​​4j 被完全禁用,并且在 IDE 中一切正常。

更好的解决方案是没有额外的配置文件;但目前找不到。

关于java - 在 Maven 测试阶段禁用 Log4J 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935715/

相关文章:

java - Grails - Jasper 插件依赖下载错误

java - 如何从 Java 访问 Windows 事件查看器日志数据

python - 使用 PyInstaller 自定义日志处理程序和格式化程序

.net - Log4Net 跨多个线程记录单个 session 的 IP 地址

java - 集团属性在Spring Stream Cloud中不起作用?

java - 如何为 maven-changes-plugin 配置超时?

java - 在操作系统级别的一个原子操作中创建和写入文件

java - 使用 jdbi3 启动 Sprinboot 时出现 AbstractMethod 错误

java - 如何返回 DataSnapshot 值作为方法的结果?

java - 无法抓取我正在寻找的数据?