我在应用程序中使用Log4J v2.0 Beta3进行日志记录,运行单元测试时会生成日志消息。我检查了API,以寻找将日志级别设置为CRITICAL之类的方法,但找不到任何更改日志记录器配置的方法。事实上,我在log4j2网站上读到了这篇文章:请注意,与Log4j 1.x不同,公共Log4j 2 API不提供添加、修改或删除附加器和过滤器的方法,也不提供以任何方式操作配置的方法。那么,在单元测试中禁用日志记录的正确方法是什么呢?
wgx48brx1#
我在log4j 2网站的“Testing in Maven”下找到了答案。推荐的方法似乎是将log4j2-test.xml文件放在src/test/resources中。将xml文件放在此目录中将导致使用它而不是log4j2.xml。
dfuffjeb2#
您可以通过将根级别设置为off(<Root level="off"/>)来禁用日志记录。因此,将log4j2.xml文件放入src/test/resources中,内容如下:
<Root level="off"/>
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn"> <Loggers> <Root level="off"/> </Loggers> </Configuration>
编辑:删除了<!DOCTYPE xml>(基于sprynter的建议)以使xml有效。
<!DOCTYPE xml>
zyfwsgd63#
只要您将文件放置在当前模块的src/test/resources中,@Jbug和@Dove的答案都有效。如果您的应用依赖于包含log4j2.xml的库,则无法用于测试运行,因为库jar不包含测试类和资源。
src/test/resources
log4j2.xml
jar
3条答案
按热度按时间wgx48brx1#
我在log4j 2网站的“Testing in Maven”下找到了答案。推荐的方法似乎是将log4j2-test.xml文件放在src/test/resources中。将xml文件放在此目录中将导致使用它而不是log4j2.xml。
dfuffjeb2#
您可以通过将根级别设置为off(
<Root level="off"/>
)来禁用日志记录。因此,将log4j2.xml文件放入src/test/resources中,内容如下:
编辑:删除了
<!DOCTYPE xml>
(基于sprynter的建议)以使xml有效。zyfwsgd63#
只要您将文件放置在当前模块的
src/test/resources
中,@Jbug和@Dove的答案都有效。如果您的应用依赖于包含log4j2.xml
的库,则无法用于测试运行,因为库jar
不包含测试类和资源。