通過非同步輸出日誌減少磁碟io提高效能
在高併發高流量響應延遲要求比較小的系統中同步打日誌已經滿足不了需求了,同步打日誌會阻塞呼叫打日誌的執行緒,而打日誌本身是需要寫磁碟的,所以會造成rt增加。非同步日誌就是為了解決這個問題。
1.同步日誌模型
2.非同步日誌模型
spring boot
工程自帶logback
和slf4j
的依賴,所以重點放在編寫配置檔案上,需要引入什麼依賴,日誌依賴衝突統統都不需要我們管了
logback
框架會預設載入classpath
下命名為logback-spring
或logback
的配置檔案。
將所有日誌都儲存在乙個檔案中檔案大小也隨著應用的執行越來越大並且不好排查問題,正確的做法應該是將error
日誌和其他日誌分開,並且不同級別的日誌根據時間段進行記錄儲存。
<?xml version="1.0" encoding="
utf-8
"?>
"部分標籤說明logback.properties
"/>
console-log
"class="
">
class="
ch.qos.logback.classic.patternlayout
">
[%d] [%c] [%t] [%l] [%-5p] %m%n
info-log
"class="
">
class="
ch.qos.logback.classic.filter.levelfilter
">
error
deny
accept
[%d] [%c] [%t] [%l] [%-5p] %m%n
class="
ch.qos.logback.core.rolling.timebasedrollingpolicy
">
$//%d.log
30error-log
"class="
">
class="
ch.qos.logback.classic.filter.thresholdfilter
">
error
[%d] [%c] [%t] [%l] [%-5p] %m%n
class="
ch.qos.logback.core.rolling.timebasedrollingpolicy
">
$//%d.log30"
info
">
ref="
console-log
" />
ref="
info-log
" />
ref="
error-log
" />
完成之後會在本地生成日誌檔案
async-info"class="
">
0256
ref="
info-log
"/>
async-error
"class="
">
0256
ref="
error-log
"/>
日誌管理系統(非同步)
1 安裝庫 非同步框架aiohttp 非同步驅動程式aiomysql 前端模板引擎jinjia2 2 構建專案目錄 1 建立連線池 建立乙個全域性的連線池,每個http請求都可以從連線池中直接獲取資料庫連線。使用連線池的好處是不必頻繁地開啟和關閉資料庫連線,而是能復用就盡量復用。2 編寫實現增刪改查...
非同步處理日誌
把所有的info日誌,採用非同步模式來處理 環境日誌檔案的io阻塞 public class logtask implements runnable override public void run catch exception e public static void loginfo strin...
logback非同步日誌
一 為什麼使用非同步日誌why 為提高程式效能,盡量預設都使用非同步日誌,如果不使用,可能日誌在打包的時候,會占用大量磁碟io和cpu,導致程式效能下降 二 依賴 dependency groupid org.slf4j groupid artifactid slf4j api artifactid...