当前位置: 首页 > 面试题库 >

在Maven测试阶段禁用Log4J日志

佴阳曦
2023-03-14
问题内容

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

让log4j尊重系统属性(如-Dlog4j.rootLogger=OFF1)以与maven一起使用或不需要对项目文件进行更改的东西会很好。我知道我可以指定-Dlog4j.configuration=alternateconfig.props
2,但我想在这里询问是否有人在构建过程中找到了一种更智能的方法来禁用日志记录,而手动干预最少。即,一些将maven检测为调用方的java类禁用了log4j或其他智能解决方案。

有什么提示吗?

笔记:

[1]:已经尝试过,并且不起作用。

[2]:很好,但似乎不适用于Maven(也许surefire跳过了它)


问题答案:

@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中的测试运行期间,log4j被完全禁用,并且一切都可以在IDE中正常工作。

更好的解决方案是不要使用其他配置文件。但到目前为止找不到。



 类似资料:
  • 运行似乎surefire没有执行其测试目标(或者至少没有选择我在配置中包含的测试)。 这是一个多模块maven项目,目前全部在groovy中,其结构类似于以下内容: 我在pom中有以下surefire配置。xml: 但是,当我针对这个pom执行

  • 我在单元测试用例中使用Mockito和Power Mockito。当我运行配置文件代码时,我能够生成jacoco报告,但是 当我在测试阶段试图生成Jacoco报告时,我遇到了错误 错误[错误]无法执行目标组织。jacoco:jacoco maven插件:0.8.2:project testproject api上的报告(默认报告):生成jacoco报告时出错:创建报告时出错:分析d:\worksp

  • 我正在尝试执行以下操作: > 在mvn测试阶段将一些数据库脚本执行到hsqldb中 将该数据库用于测试目的 我能够配置maven,以便每次调用测试阶段时,所有脚本都成功执行,但是(当然有但是),我所有的测试都失败了。 我的配置: pom.xml 测试Spring配置: 输出: 但后来我所有的测试都失败了。我需要你的帮助,找出为什么它不起作用,并帮助我找到解决方案。非常感谢。 @安德鲁洛维诺夫 这是

  • 有什么想法吗? 谢谢

  • 如何禁用Maven3默认生命周期中不需要的阶段? 例如,我希望、和阶段永远不会发生,并将我的构建日志从以下内容转变为: 变成这样:

  • 我有一个多模块的maven项目 我有maven surefire插件设置,用于执行单元测试“*测试。“核心api”模块中包含java。 我们在一个单独的“集成测试”模块中进行了缓慢的长时间运行的集成测试。我们使用“*测试。java也用于我们的integ测试。 我们需要能够编译所有源代码,但希望排除“intg-test”作为默认maven“test”阶段的一部分运行。我们计划使用配置文件来启用“in