springboot启动过程解析logback

沧海一滴 沧海一滴     2022-07-30     178

关键词:

使用 Spring Boot 默认的日志框架 Logback。

所有这些 POM 依赖的好处在于为开发 Spring 应用提供了一个良好的基础。Spring Boot 所选择的第三方库是经过考虑的,是比较适合产品开发的选择。但是 Spring Boot 也提供了不同的选项,比如日志框架可以用 Logback 或 Log4j,应用服务器可以用 Tomcat 或 Jetty。
http://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/

spring boot里有颜色日志的实现

当在shell里启动spring boot应用时,会发现它的logger输出是有颜色的,这个特性很有意思。

可以通过这个设置来关闭:

spring.output.ansi.enabled=false

原理是通过AnsiOutputApplicationListener ,这个来获取这个配置,然后设置logback在输出时,加了一个 ColorConverter,通过org.springframework.boot.ansi.AnsiOutput ,对一些字段进行了渲染。

获取进程的PID

ApplicationPid,可以获取PID。

    private String getPid() {
        try {
            String jvmName = ManagementFactory.getRuntimeMXBean().getName();
            return jvmName.split("@")[0];
        }
        catch (Throwable ex) {
            return null;
        }
    }

包装Logger类

spring boot里自己包装了一套logger,支持java, log4j, log4j2, logback,以后有需要自己包装logger时,可以参考这个。

在org.springframework.boot.logging包下面。

获取原始启动的main函数

通过堆栈里获取的方式,判断main函数,找到原始启动的main函数。

private Class<?> deduceMainApplicationClass() {
    try {
        StackTraceElement[] stackTrace = new RuntimeException().getStackTrace();
        for (StackTraceElement stackTraceElement : stackTrace) {
            if ("main".equals(stackTraceElement.getMethodName())) {
                return Class.forName(stackTraceElement.getClassName());
            }
        }
    }
    catch (ClassNotFoundException ex) {
        // Swallow and continue
    }
    return null;
}

https://yq.aliyun.com/articles/6056?spm=5176.100240.searchblog.20.i049N1#2

http://www.cnblogs.com/wangdaijun/p/5446924.html

 

springboot--springboot的启动整体过程|自动配置类解析注册过程|spring5源码解析(代码片段)

1.SpringBoot启动类注解@SpringBootApplication:2.SpringBoot的启动: 2.1.getSpringFactoriesInstances: 2.1.1.SpringFactoriesLoader.loadFactoryNames: 2.2.SpringApplication#run: 查看详情

springboot源码解析启动过程(代码片段)

1.springboot的入口程序@SpringBootApplicationpublicclassStartupApplicationpublicstaticvoidmain(String[]args)SpringApplication.run(StartupApplication.class,args);当程序开始执行之后,会调用SpringApplication 查看详情

springboot源码解析启动过程(代码片段)

1.springboot的入口程序@SpringBootApplicationpublicclassStartupApplicationpublicstaticvoidmain(String[]args)SpringApplication.run(StartupApplication.class,args);当程序开始执行之后,会调用SpringApplication的构造方 查看详情

springboot应用系列5--springboot2整合logback

上一篇我们梳理了SpringBoot2整合log4j2的配置过程,其中讲到了SpringBoot2原装适配logback,并且在非异步环境下logback和log4j2的性能差别不大,所以对于那些日志量不算太高的项目来说,选择logback更简单方便。1.pom.xmlpom.xml不需要添加... 查看详情

springboot系列一:默认日志logback配置解析

前言今天来介绍下SpringBoot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢如何引入日志?日志输出格式以及输出方式如何配置?代码中如何使用?正文SpringBoot在所有内部日志中使用CommonsLogging,但是... 查看详情

springboot启动过程-refresh方法

1 springboot在启动的时候,会调用run方法,创建环境设置spring容器,其中包含refresh方法,完成配置类解析,各种beanFactoryPostProcess和beanPostProcessor注册,web内置容器构造,国际化配置初始化等,refresh调用了父类AbstractApplicationContex... 查看详情

springboot-logback

 springboot logback配置1.pattern解析:  %d{yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX}   带时区的时间  %level   日志级别  [%thread]   线程名  [%logger{50}:%line]    打印日志对应的方法和行数  [uuid:%X{operation 查看详情

springboot2.1.7启动过程源码解析(代码片段)

约定    本文基于springboot2.1.7.RELEASE进行剖析,使用的springcloud为Greenwich.SR6版本,github仓库为:springboot演示。该仓库有多个子模块,下文使用的是consumer子模块。    术语约定:springboot容器,main方法启... 查看详情

logback源码阅读-配置文件解析过程(代码片段)

前面介绍了logback源码初始化过程是委托给ContextInitializerStaticLoggerBindervoidinit()trytry(newContextInitializer(this.defaultLoggerContext)).autoConfig();catch(JoranExceptionvar2)Util.report("Failedtoautoconfiguredefaultloggercontext",var2);if(!StatusUtil.contextHasStatusListener(th... 查看详情

springboot如何配置日志logback?(代码片段)

原文链接:http://tengj.top/2017/04/05/springboot7/本文标题:SpringBoot干货系列:(七)默认日志logback配置解析文章作者:嘟嘟MD发布时间:2017-04-05,17:01:12最后更新:2019-08-18,10:59:33原始链接:http://tengj.top/2017/04/05 查看详情

springapplicationcontext启动过程

1.前言    springboot2.1.7启动过程源码解析讲到了SpringBoot的启动过程,在第5模块和第6模块,讲到了SpringApplicationContext的启动过程,会创建一个AnnotationConfigServletWebServerApplicationContext,之后调用相关的ApplicationCont 查看详情

springapplicationcontext启动过程(代码片段)

1.前言    springboot2.1.7启动过程源码解析讲到了SpringBoot的启动过程,在第5模块和第6模块,讲到了SpringApplicationContext的启动过程,会创建一个AnnotationConfigServletWebServerApplicationContext,之后调用相关的ApplicationCont 查看详情

启动应用程序时出现 FileNotFoundException (Logback)

...时间】:2019-04-1612:38:51【问题描述】:在tomcat8.5.0上运行SpringBoot2.0.3应用程序时出现以下错误:ch.qos.logback.core.rolling.RollingFileAppender[文件]中的 查看详情

springboot多环境日志配置,启动时logback-test.xml文件冲突导致启动失败:openfile(null,true)callfailed.java.io.filenotfoun

...志配置文件,启动时在application.properties中指定环境,让springboot自动加载logback对应的配置文件:    每个环境的日志目录都不一样,比如sit和test环境分别是:      如果spring.profiles.active配置的是test,那... 查看详情

springboot启动及自动装配原理

一、servlet2(老spring-mvc)配置文件:web.xml:主要配置项目启动项application-context.xml:主要配置项目包扫描、各种bean、事务管理springMVC.xml:主要配置controller包扫描、视图解析器、参数解析器启动过程:每一个spring项目启动时都需... 查看详情

springboot配置每天一个日志文件logback-spring.xml

...pring.xml内容部署启动(2)application.yml放在resources下工程目录springboot配置每天一个日志文件logback-spring.xmlspringboot工程配置文件可以放在多个地方,可以直接放在resources目录下,也可以放在根目录下的config目录&#x 查看详情

springboot使用默认的logback配置logback-spring.xml每天一个日志文件(代码片段)

...ring.xml内容部署启动(2)application.yml放在resources下使用logbackspringboot配置每天一个日志文件logback-spring.xmlspringboot工程配置文件可以放在多个地方,可以直接放在resources目录下,也可以放在根目录下的con 查看详情

springboot启动分析

...初始化过程的三个步骤。  第一步:Resource定位  在SpringBoot中,我们都知道他的包扫描是从主类所在的包开始扫描的,prepareContext()方法中,会先将主类解析成BeanDefinition,然后在refresh()方法的invokeBeanFactoryPostProcessors()方法中... 查看详情