为什么我的Log4j日志不能显示到控制台?

问题描述 投票:0回答:1

我在EclipseSTS中用Spring MVC和Maven构建了一个web应用。

我想添加日志记录,所以我在pom.xml中添加了SLF4和Log4J,像这样。

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

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

# 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放在项目中的不同地方,但是什么都没有。

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

spring eclipse maven log4j slf4j
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>

1
投票

在你的pom.xml中缺少了日志引擎,你可以使用log4j2.请考虑使用最新版本的pom.xml。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>
© www.soinside.com 2019 - 2024. All rights reserved.