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

Spring Boot 2.1在调试模式下启动根日志记录器,直到横幅打印?

张可人
2023-03-14

这里有一些输出来举例说明我正在谈论的内容。调试消息不仅仅来自Aey4J记录器,它们也来自其他几个类。我调试了应用程序,发现根记录器设置为DEBUG,然后在打印Spring Banner后设置为INFO(我不认为横幅与它有任何关系)。

我的类路径上没有任何与日志记录相关的文件,除非它们是由我不知道的依赖项添加的。

我也尝试过这种设置。

# Logging
logging.level.root=INFO
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=INFO

在我的application.properties文件中,但这并没有帮助,Spring Boot 2.1仍然以DEBUG级别输出所有内容,直到横幅打印出来。关于如何防止Root记录器在开始时显示为DEBUG而不是INFO的任何想法都将是很棒的。

15:34:47.971 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'org.springframework.boot.logging.AbstractLoggingSystem'
15:34:47.974 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'ch.qos.logback.classic.joran.JoranConfigurator'
15:34:47.976 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'ch.qos.logback.core.joran.JoranConfiguratorBase'
15:34:47.979 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'ch.qos.logback.core.joran.GenericConfigurator'
15:34:47.980 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'org.springframework.boot.logging.logback.SpringBootJoranConfigurator'
15:34:47.982 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'ch.qos.logback.classic.spi.LoggerContextListener'
15:34:47.985 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'ch.qos.logback.classic.turbo.TurboFilter'
15:34:47.987 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'org.springframework.boot.logging.logback.LogbackLoggingSystem$1'
15:34:47.988 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'org.springframework.boot.logging.LoggerConfigurationComparator'
15:34:47.989 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'org.springframework.boot.logging.AbstractLoggingSystem$LogLevels'
15:34:48.009 [main] DEBUG AspectJ Weaver - [AspectJ] not weaving 'org.slf4j.bridge.SLF4JBridgeHandler'

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.1.RELEASE)

2018-11-21 15:34:50.094  INFO 1 --- [           main] c.s.technology.screening.SpringConfig    : Starting SpringConfig on 940e73166080 with PID 1 (/web.jar started by root in /)
2018-11-21 15:34:50.100  INFO 1 --- [           main] c.s.technology.screening.SpringConfig    : No active profile set, falling back to default profiles: default
2018-11-21 15:34:50.420  INFO 1 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4e0ae11f: startup date [Wed Nov 21 15:34:50 EST 2018]; root of context hierarchy
2018-11-21 15:34:53.506  INFO 1 --- [           main] AspectJ Weaver                           : [AspectJ] Join point 'method-execution(org.springframework.data.domain.Page com.sasquatch.technology.screening.api.JobController.listJobs(org.springframework.data.domain.Pageable))' in Type 'com.sasquatch.technology.screening.api.JobController' (JobController.java:48) advised by around advice from 'org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect' (AnnotationSecurityAspect.aj:70)
2018-11-21 15:34:53.525  INFO 1 --- [           main] AspectJ Weaver                           : [AspectJ] Join point 'method-execution(com.sasquatch.technology.screening.persistence.entities.Job com.sasquatch.technology.screening.api.JobController.addJob(com.sasquatch.technology.screening.persistence.entities.Job))' in Type 'com.sasquatch.technology.screening.api.JobController' (JobController.java:54) advised by around advice from 'org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect' (AnnotationSecurityAspect.aj:70)
2018-11-21 15:34:53.620  INFO 1 --- [           main] AspectJ Weaver                           : [AspectJ] Join point 'method-execution(org.springframework.http.ResponseEntity com.sasquatch.technology.screening.api.TestHelperController.resetDatabase())' in Type 'com.sasquatch.technology.screening.api.TestHelperController' (TestHelperController.java:45) advised by around advice from 'org.springframework.transaction.aspectj.AnnotationTransactionAspect' (AbstractTransactionAspect.aj:66)

共有2个答案

史和泰
2023-03-14

对于集成或单元测试,另一个可能不那么具有侵入性的解决方案是在 src/test/resources 中创建一个日志回溯测试.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework" level="INFO"/>
</configuration>

来源:https://www . mkyong . com/spring-boot/spring-boot-test-how-to-stop-debug-logs/

这并没有完全解决问题中提出的问题,但搜索引擎在为我的测试搜索解决方案时将我带到了这里,所以我预计这可能会发生在其他人身上,这也是我分享这些信息的原因。

黎曾笑
2023-03-14

我能够将问题的根源追溯到Spring在初始化并运行org.springframework.boot.logging.LoggingSystem的实现类之前不会设置日志记录级别的事实。当Logback启动时,它会在ch.qos.logback.classic.LoggerContextclassthis.root.setLevel(Level.DEBUG)中将Root记录器默认设置为DEBUG。

我将以下代码添加到类内的静态初始化块中,该块包含启动Spring应用程序的main()方法。根记录器被提取(将其初始化为 DEBUG),然后转换为日志回记录器。请记住,这意味着此修复的实现与类路径上的实际日志记录实现相关联。如果我通过log4j或apache共享资源进行所有日志记录,我从LoggerFactory.getLogger()获得的记录器将是不同的类型,因此需要不同的转换。此强制转换是必需的,因为 SLF4J 外观不会公开以编程方式更改日志记录级别的方法。一旦我对根记录器进行了折射,那么我就设置了级别。此级别最终被 Spring 覆盖,因此,如果我想自动保持 Spring 设置和初始化块不变,则需要执行更多的管道。

@SpringBootApplication
public class SpringConfig {

    static {
        ((ch.qos.logback.classic.Logger) org.slf4j.LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).setLevel(Level.INFO);
    }
}
 类似资料:
  • 一般来说,你应该在运行时增加调试选项来调试问题;也可以把调试选项添加到 Ceph 配置文件里来调试启动问题,然后查看 /var/log/ceph (默认位置)下的日志文件。 Tip 调试输出会拖慢系统,这种延时有可能掩盖竞争条件。 日志记录是资源密集任务。如果你碰到的问题在集群的某个特定区域,只启用那个区域对应的日志功能即可。例如,你的 OSD 运行良好、元数据服务器却不行,这时应该先打开那个可疑

  • 在开发和测试环境下,根记录器级别为DEBUG或info。spring-boot横幅在应用程序启动时显示: logging-devel.xml(显示横幅) logging-production.xml(未显示横幅)

  • 我刚刚为我们的微服务环境在前端创建了简单的Zuul代理,但现在我想将所有条目记录到通过代理的日志文件中。 做任何我需要做的事情。

  • 通常我只使用以下命令启动tomcat: 如果我需要调试我使用的代码: 到目前为止,效果很好。但是如果我使用第二个命令,日志不会显示在控制台中。我想在调试模式下运行tomcat,并在控制台中查看日志文件。目前,当需要时,我总是需要在这两种模式之间切换。 这个问题似乎很简单,但我没有在stackoverflow或google上找到合适的答案:-/ 谢谢你的帮助!:-)

  • 我在一个Spring Boot应用程序中有一个关于登录的配置问题。我希望我的看起来像默认的Spring Boot控制台附加器。如何从Spring Boot默认控制台附加器继承模式? 下面是我的配置

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?