【同步列印的邏輯】
1、logback。xml配置
2、logback初始化時解析appender
裝載ConsoleAppender
裝載FileAppender
3、遍歷appender列印
一路下來會進入OutputStreamAppender。java的subAppend方法,方法裡面加鎖
繼續會進入LayoutWrappingEncoder。java的doEncode方法進行刷盤
【非同步列印的邏輯】
1、logback。xml配置
2、AsyncAppender初始化時會構建一個存放日誌的佇列及消費日誌的work執行緒
寫的時候分為兩步,第一步會把LoggingEvent放到佇列裡面就返回了
第二步,worker執行緒會去消費佇列取出LoggingEvent,寫到檔案磁碟,寫磁碟的邏輯和前面同步寫的邏輯一樣