我将SLF4J与LOG4J一起使用,并且配置通常在中log4j.properties,并且它将日志级别设置为INFO。
log4j.properties
但是,在测试期间,我想将日志设置为DEBUG。
我看不到一种自动执行此操作的方法,也无法让类似的内容log4j.tests.properties仅在测试期间加载。
log4j.tests.properties
因此,我尝试在测试设置(@BeforeClass)中以编程方式执行此操作:
LogManager.getRootLogger().setLevel(Level.ALL);
没有成功…
我正在使用以下版本:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.5</version> </dependency>
我怎样才能达到这个结果?
编辑: 我认为我还不够清楚。这个问题不是关于设置正确的日志级别…而是关于在运行Junit测试时设置DEBUG日志级别,以及在任何其他情况下设置INFO日志级别。我想使它自动化。
您无需为JVM提供其他日志实现。
日志记录代码log4j.properties使用类路径搜索文件。因此,您需要做的就是确保测试log4j.properties文件位于发布文件之前的位置。
我使用Maven,它使目录中的文件布局变得容易。我的发布log4j.properties在目录中src/main/resources。我的测试版本进入src/test/resources。Eclipse构建路径(classpath)设置为src/test/resources在之前搜索src/main/resources,因此您的单元测试使用测试文件。JAR(或WAR)构建说明使用中的文件src/main/resources。
src/main/resources
src/test/resources