【问题标题】:Why is my Log4j logging not displaying to the console?为什么我的 Log4j 日志没有显示到控制台?
【发布时间】:2020-09-17 07:16:59
【问题描述】:

我有一个使用 Spring MVC 和 Maven 在 Eclipse/STS 中构建的 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>

我在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 放在项目中的不同位置,但没有。

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

【问题讨论】:

    标签: spring eclipse maven log4j slf4j


    【解决方案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>
    

    【讨论】:

    • 你是对的,但我从另一个用户那里得到了类似的答案,所以我先将他们的答案标记为正确。感谢您的帮助!
    • @Elliot.Easton.2020 这是一个更好的答案。 log4j (1.2.17) 的最新版本是 2012 年 5 月发布的。没有理由不使用使用现代工具更新的维护版本。
    【解决方案2】:

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

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

    【讨论】:

    • 这就是缺少的!谢谢。我错误地认为 slf4j-log4j12 就足够了。谢谢!
    • 感谢您的帮助,仅供参考,我发布了另一个 Log4j 问题,如果您能看一下,那就太好了! stackoverflow.com/questions/62094862/…
    • 对不起,我出去了几天,我检查了,很高兴您在第二个问题中找到了答案。干杯!
    猜你喜欢
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多