非同步處理日誌

2021-10-10 06:47:24 字數 1256 閱讀 8662

/**

* 把所有的info日誌,採用非同步模式來處理(環境日誌檔案的io阻塞)

*/public

class

logtask

implements

runnable

@override

public

void

run(

)catch

(exception e)}}

public

static

void

loginfo

(string msg)

catch

(exception e)

}}

@weblistener

public

class

mycontextlistener

implements

servletcontextlistener

/** * @see servletcontextlistener#contextdestroyed(servletcontextevent)

*/public

void

contextdestroyed

(servletcontextevent sce)

/** * @see servletcontextlistener#contextinitialized(servletcontextevent)

*/public

void

contextinitialized

(servletcontextevent sce)

}catch

(exception e)

finally

//日誌啟動任務

// new thread(new logtask()).start();

executorservice pool=executors.

newsinglethreadexecutor()

; pool.

execute

(new

logtask()

);}}

此處選擇使用執行緒池,來建立執行緒而不使用new thread來建立執行緒的原因主要是為了避免程式一旦報錯,執行緒就會結束。使用 *executorservice pool=executors.newsinglethreadexecutor();*的優勢是,一旦發生錯誤,執行緒結束後,會立馬分配另乙個執行緒來工作。

非同步記錄日誌 獲取非同步處理結果

1.場景 有事務的情況下,記錄將異常資訊記錄到異常表中 2.處理過程 2.1本來是加上never或者notsurport註解,然後在throw拋異常之前把異常資訊插入資料庫,但是未成功,拋異常時回滾 2.2finally中呼叫被 async註解的方法 2.3注意 這個帶 async註解的方法要放在其...

logback非同步日誌

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

非同步日誌管理

通過非同步輸出日誌減少磁碟io提高效能 在高併發高流量響應延遲要求比較小的系統中同步打日誌已經滿足不了需求了,同步打日誌會阻塞呼叫打日誌的執行緒,而打日誌本身是需要寫磁碟的,所以會造成rt增加。非同步日誌就是為了解決這個問題。1.同步日誌模型 2.非同步日誌模型 spring boot工程自帶log...