2011-03-11 88 views
5

我正在開發一個項目,以將來自多臺機器的日誌數據組合到單個數據庫中。使用JMS和logback進行分佈式日誌記錄

我必須記錄場景:

  1. 通常例外的記錄和顯影劑測井例如一個開發人員將關卡調試。
  2. 「審計」日誌記錄。特殊場景需要以單獨的結構記錄在單獨的數據庫中。

我正在使用logback和JMS。 「客戶端」記錄到JMS隊列,「服務器」讀取表單隊列並寫入數據庫。

我正在尋找一種簡單的方法來區分兩種類型的日誌。 我想要做的是創建另一個日誌級別,例如「審計」,然後我可以檢查「服務器」端,並創建我們的特殊對象結構並寫入我們單獨的數據庫。

但是這在logback中是不可能的。我考慮過標記,但這意味着開發人員必須明確應用標記。我的另一種選擇是有兩個獨立的記錄器,並讓開發者抓住正確的記錄器。這並不像我想的那麼優雅。

我想開發只做log.debug調試,log.error錯誤和log.audit審計。

任何建議,任何人都必須解決類似的問題?

回答

3

首先,爲什麼不直接使用DBAppender並直接登錄數據庫,跳過JMS層呢?如果性能是您關心的話,Logback將提供設施給log asynchronously

至於過濾,單獨的記錄器是最簡單和最乾淨的方式來做到這一點(然後簡單地通過記錄器/類別過濾)。這種方法強調這些是特殊日誌,而不是普通的應用程序調試。我甚至會考慮將這個審計日誌記錄包裝在某些服務/方面,以將其與業務邏輯分開。

如果您真的想重複使用現有的記錄器,可以使用Logback filters在運行時分派和過濾事件。

+0

如果數據庫不可用,會發生什麼情況? JMS基礎設施也可能無法使用,但是我從來沒有遇到過無計劃的JMS停機(在我的情況下是TIBCO EMS),但是我發現很多意外的DB停機。 – 2011-05-09 22:33:33

+0

Thomasz,你能提供一個關於Logback如何支持異步日誌記錄的鏈接嗎?我在他們的文檔或JavaDoc中找不到任何對它的引用。謝謝。 OMG! – curthipster 2011-06-13 20:03:09

+1

OMG!仍然沒有完成:[LBCORE-92](http://jira.qos.ch/browse/LBCORE-92),[LBCLASSIC-177](http://jira.qos.ch/browse/LBCLASSIC-177)。 ..編輯我的答案 – 2011-06-13 20:13:56

相關問題