当前位置: 首页 > 知识库问答 >
问题:

调试模式下的Spring Boot日志未使用log4j starter打印

拓拔君博
2023-03-14

根据spring boot文档(最新版本),它提到spring boot在内部使用logback。

我使用了log4j启动器,如下所述,不包括logback

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
        </dependency>
    </dependencies>

例如,如果下面的命令在调试模式下运行(假设sboot1是我的uber jar)

java -jar target\sboot1-1.0.jar --debug

我没有得到调试日志,这些日志是之前使用logback生成的,logback显示了“排除”和“包含”以及其他必要的信息。

当使用其他日志框架(如log4j)时,如何获取--debug日志?

共有1个答案

段干德泽
2023-03-14

当您启动应用程序时,您将看到Log4j中的三条警告消息:

log4j:WARN No appenders could be found for logger (org.springframework.boot.SpringApplication).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

他们告诉你,你没有正确配置Log4j。

看看你的log4jSpring。属性file,您尚未配置log4j。rootCategory并且您唯一配置的记录器是log4j。记录器。通用域名格式。mnkartik。这意味着,任何由com之外的代码执行的日志记录。mnkartik软件包未配置任何附加器,因此是三条警告消息中的第一条。

将以下内容添加到您的log4j-spring.properties文件中:

logging.rootCategory=INFO, consoleAppender, fileAppender

这意味着com.mnkartik之外的所有记录器都将在INFO级别登录,并将写入控制台和文件附加程序。因此,--debug现在应该有预期的效果,因为org.springframework.boot.*中的代码现在有可以登录的地方。

顺便说一句,或许还值得指出的是,Apache已经宣布了Log4j的生命终结,因此,它在Spring Boot 1.3中被弃用,并将在1.4中被删除。您应该考虑迁移到Log4J 2的回滚。

 类似资料:
  • 当我在Wildfly10上部署war时,Log4j日志不会打印。1.0.最终的不过,它与Tomcat配合得很好。 我在网上发现Wildfly使用log4j,所以我在jboss部署结构中排除了log4j。下面的xml避免了依赖冲突,但没有运气。 下面是我log4.properties档案 下面是我的pom。xml依赖关系 下面是我部署战争时得到的错误日志。 我正在尝试运行独立的完整ha。xml

  • 本文向大家介绍Node.js利用debug模块打印出调试日志的方法,包括了Node.js利用debug模块打印出调试日志的方法的使用技巧和注意事项,需要的朋友参考一下 前言 大家都知道在node程序开发中时,经常需要打印调试日志。用的比较多的是debug模块,比如express框架中就用到了。下文简单举几个例子进行说明。文中相关代码示例,可在这里找到。 备注:node在0.11.3版本也加入了ut

  • 问题 如何在调试模式下使用session? 解法 使用web.py自带的webserver提供web服务时,web.py就运行在调试模式下。当然最简单的办法就是禁用调试,只要令web.config.debug = False即可。 import web web.config.debug = False # rest of your code 如果非要用调试模式下使用session,可以用非主流

  • 我刚拿到一台新的索尼Xperia XA,在这台设备上发现了一个奇怪的问题。它没有显示任何详细的调试日志。我尝试了Android Studio中的每个设置,使用adb logcat检查Android Studio是否只是过滤它们。我甚至使用了不同的电缆。我没主意了,请帮帮我。

  • 我在记录调用类的类名时遇到问题。我在logback中编写了日志实用程序类。出于性能原因,我使用单例模式创建了记录器实用程序。但是,当我从其他类调用日志语句时,我会打印实用工具的类名,而不是调用类。 测试课就像 我得到的输出如下打印而不是LogUtilTest,我需要帮助记录我的调用类名 2014-04-14 16:47:21信息[main]MyModule[LogUtil.info:42]类名[c

  • 这里有一些输出来举例说明我正在谈论的内容。调试消息不仅仅来自Aey4J记录器,它们也来自其他几个类。我调试了应用程序,发现根记录器设置为DEBUG,然后在打印Spring Banner后设置为INFO(我不认为横幅与它有任何关系)。 我的类路径上没有任何与日志记录相关的文件,除非它们是由我不知道的依赖项添加的。 我也尝试过这种设置。 在我的application.properties文件中,但这并