logback 日誌非同步配置

2021-10-24 12:27:32 字數 1250 閱讀 7961

<?xml version="1.0" encoding="utf-8"?

>

>

->

[%-5level]%logger

:%5line-%msg%n"/>

>

>$

>

>

>

>$/%d.log>

>10>

>

>

>$

>

>

>

>

->

>

>

這種同步寫入的方式勢必會影響業務的執行效率。幸運的是,logback 提供了非同步的方式來解決這個問題,logback-spring.xml 配置如下:

<?xml version="1.0" encoding="utf-8"?

>

>

->

[%-5level]%logger

:%5line-%msg%n"/>

>

>$

>

>

>

>$/%d.log>

>10>

>

>

>$

>

>

>0>

>512>

->

>

>

->

>

>

引數說明:引數

預設值說明

discardingthreshold

20如果設定discardingthreshold=0,表示 queue 滿了,不丟棄,block 執行緒。預設情況下,當阻塞佇列剩餘 20% 的容量時,它將丟棄級別跟蹤、除錯和資訊事件,只保留級別警告和錯誤事件。要保留所有事件,請將 discardingthreshold 設定為0

queuesize

256假設 io 影響 30s,日誌和 qps 比例是1:1,單容器壓測值 1500 qps 則可以推算出 queuesize 的值,queuesize 的設定公式:30 * 1500=45000

neverblock

false

如果為 false(預設值),則追加程式將阻止追加到完整佇列,而不是丟失訊息。設定為 true 時,附加程式只會丟棄訊息,不會阻止您的應用程式

最後,通過一張圖來說明一下非同步寫日誌的原理:

logback 非同步日誌配置

目前所有的日誌記錄方式採用的都是同步的方式,即直接將日誌寫入檔案。在多應用的時候,這種效果會導致一定的執行緒執行延遲,所以可以採用非同步的方式處理。0.11及以上版本存在 非同步日誌記錄是在原來logback上的擴充套件,並不是替代方式,所以只需要在原來的配置檔案上新增一下配置 這樣你的工程就會使用...

logback非同步日誌

一 為什麼使用非同步日誌why 為提高程式效能,盡量預設都使用非同步日誌,如果不使用,可能日誌在打包的時候,會占用大量磁碟io和cpu,導致程式效能下降 二 依賴 dependency groupid org.slf4j groupid artifactid slf4j api artifactid...

Logback日誌配置

logback越來越流行,不過使用過程中覺得還不錯,配置簡單明瞭。不過有幾點需要注意的是 spring boot中使用logback不需要再引入logback的三個jar包,因為在spring boot starter logging已經整合了它。幾種日誌過濾器,需要了解明白,不然不能配置到自己想要...