Intellij Idea 在IntelliJ的单元测试中自定义log4j

qojgxg4l  于 2024-01-05  发布在  其他
关注(0)|答案(1)|浏览(104)

我想从IntelliJ IDE定制一些junit日志。
我有一个示例IntelliJ Maven项目。我的目标是能够配置src/test/java的日志。
根据我的理解,log4j配置的约定是将其放置在:

  • src/test/resources/log4j.properties
  • IntelliJ自动将src/test/resources/识别为Maven资源目录。
  • 我还尝试将log4j.properties文件添加到根目录testsrc,但都没有成功。

我的单元测试看起来像这样:

  1. import org.apache.logging.log4j.LogManager;
  2. import org.apache.logging.log4j.Logger;
  3. import org.junit.Test;
  4. public class LogTest {
  5. private static Logger log = LogManager.getLogger(LogTest.class);
  6. @Test
  7. public void printLogs() {
  8. log.info("Hello world from log.info!");
  9. log.error("Hello world from log.error!");
  10. }
  11. }

字符串
我的src/test/resources/log4j.properties看起来像这样:

  1. log4j.rootLogger=ALL


.然而,输出从不显示log.info行。

  1. 00:48:19.766 [main] ERROR LogTest - Hello world from log.error!
  2. Process finished with exit code 0


.所以我在配置单元测试日志的第一步就卡住了。我做错了什么?如果需要,我很乐意分享pom.xml和/或IntelliJ项目。这是IntelliJ提供的默认Maven项目,添加了junitlog4j-apilog4j-core的依赖项。

bq8i3lrv

bq8i3lrv1#

有点捂脸的时刻,但我回去和RTFM的d,这是两个错误(和修复)
1.它被称为log4j2.properties,而不是log4j.properties强调2

  1. src/test/resources/log4j2.properties
  2. ^------------ the number two is needed

字符串
1.房产上没有log4j前缀。

  1. # BEFORE
  2. log4j.rootLogger=...
  3. # ^------------ remove the "log4j." prefix
  4. # AFTER
  5. rootLogger=...


现在有一个工作的IntelliJ和可定制的log4j。
虽然这些可能对一些人来说是显而易见的,但我在这里留下了问题和答案,因为很多时间都浪费在这些小细节上,我希望它能为其他人保存一些时间。

展开查看全部

相关问题