23

我在我的应用程序中使用 Log4J v2.0 Beta3 进行日志记录,并且在运行单元测试时生成了日志消息。我检查了 API 以了解将日志级别设置为 CRITICAL 之类的某种方式,但我找不到任何方法来更改记录器配置。

事实上,我在 log4j2 网站上读到了这个:

请注意,与 Log4j 1.x 不同,公共 Log4j 2 API 不公开添加、修改或删除附加程序和过滤器或以任何方式操作配置的方法。

所以就这么说了。从单元测试中禁用日志记录的正确方法是什么?

4

3 回答 3

25

我在 log4j2 网站的“ Testing in Maven ”下找到了我的答案。推荐的方法似乎是在 src/test/resources 中放置一个 log4j2-test.xml 文件。将 xml 文件放入此目录将导致使用它而不是 log4j2.xml。

于 2013-01-04T16:28:45.740 回答
5

您可以通过将根级别设置为关闭 ( <Root level="off"/>) 来禁用日志记录。

因此,将 log4j2.xml 文件放入 src/test/resources 中,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
    <Loggers>
        <Root level="off"/>
    </Loggers>
</Configuration>

编辑:删除<!DOCTYPE xml>(基于 sprynter 的建议)以使 xml 有效。

于 2018-11-27T22:32:26.137 回答
0

只要您将文件放入当前模块, @Jbug@Dove的答案都有效。src/test/resources如果您的应用程序依赖于一个库来包含log42.xml它,它将无法用于测试运行,因为库jar不会包含测试类和资源。

于 2019-11-10T21:37:57.760 回答