Spring boot 啟動過程解析 logback


使用 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM