为什么我的 Log4j 日志记录没有显示到控制台?

Why is my Log4j logging not displaying to the console?

我在 Eclipse/STS 中使用 Spring MVC 和 Maven 构建了一个网络应用程序。

我想添加日志记录,所以我像这样将 SLF4 和 Log4J 添加到 pom.xml..

     <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.30</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.30</version>
        <scope>test</scope>
    </dependency>

     <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.30</version>
        <scope>test</scope>
    </dependency>

我在 project/src/main/resources 文件夹中有一个简单的 log4j.properties 文件,像这样...

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我在我的主 WebController 中创建了一个 Logger class,就像这样...

private static Logger logger = LoggerFactory.getLogger(WebController.class);

在我的 "showMain" 方法中,我正在做一些日志记录,比如这样...

@RequestMapping(value={"", "/", "showhome"}, method={RequestMethod.POST,RequestMethod.GET})
public ModelAndView showHome(Model model) {

    logger.info("########### TEST LOG INFO");
    logger.error("########### TEST LOG ERROR");
    logger.warn("########### TEST LOG WARN");
    logger.debug("########### TEST LOG DEBUG");

    /* ... */
}

但是当我 运行 应用程序时,我没有在控制台中看到任何日志输出。

我在控制台输出中也没有看到任何表明它正在使用日志框架的信息。而且没有 "can't find log4j.properties" 消息或任何东西。

我尝试将 log4j.properties 放在项目的不同位置,但没有。

我一定是漏掉了一些简单的东西?我错过了什么?

您说您在 pom.xml 中添加了 log4j,但我没有看到它,您确定这是 pom.xml 的最新版本吗?

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

您的 pom.xml 缺少日志记录引擎,您可以使用 log4j2。 请考虑使用最新版本的 log4j2 而不是 log4j (1.2.x) 因为你可以提前:

  1. 惰性日志:log4j(1.2.x) 如果级别未激活,也会构建一个字符串
  2. lambda 以避免评估昂贵的方法
  3. 现代平台的大量附加程序
  4. 配置大量参数的更简单方法(重新加载配置、附加程序……)

pom.xml

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.13.3</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.13.3</version>
  </dependency>
</dependencies>