为什么我的Log4j日志未显示在控制台上?

时间:2020-05-29 16:38:34

标签: spring eclipse maven log4j slf4j

我有一个使用Spring MVC和Maven在Eclipse / STS中构建的Web应用。

我想添加日志记录,所以我将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类,就像这样...

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");

    /* ... */
}

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

我也没有在控制台输出中看到任何内容来表明它甚至在使用日志记录框架。而且没有“找不到log4j.properties”消息或其他任何内容。

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

我一定缺少简单的东西吗?我错过了什么?

2 个答案:

答案 0 :(得分:1)

在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>

答案 1 :(得分:0)

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

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