2009-10-27 58 views
6

東西感覺不對我在這裏,所以我想社會上的輸入 - 也許我在錯誤的方式接近這一點....記錄*商業*事件 - 使用記錄框架?這裏

問:是否適合使用傳統的基礎設施日誌框架(如log4net)登錄業務事件

當我說的商業活動,我的意思是我希望有一個全球性的日誌是這樣的:

xx:xx Customer A purchased widget B. 
xx:xx Widget B was dispatched from warehouse. 
xx:xx Customer B payment declined. 

大多數傳統的基礎設施日誌框架具有事件級別是這樣的:

當然
FATAL 
ERROR 
WARN 
INFO 
DEBUG 

的這些消息並不適合。最好的描述是INFO,但當然這些都是重要的事件,INFO的重要性非常低。

我仍想這是一個「登錄」

在我看來,我有兩個選擇(例如,我不希望有從我的業務提取此我想看到它每一次的對象):

1)使用像log4net這樣的框架,併爲此定義一個特殊的記錄器(並且以它感覺不對的事實爲生)。

2)爲執行此操作提供服務,不依賴於傳統的日誌記錄服務。

我傾向於2.其他人在類似情況下做了什麼?

謝謝!

回答

4

你想要的東西聽起來像一個審計服務,而不是一個日誌記錄服務。如果我是對的,你的目標是跟蹤這些商業事件的歷史甚至報告目的。您可以使用審覈中的細節,因爲沒有更好的詞組,因此將責任歸咎於系統中發生的事件。

我可能不會使用log4j這樣的日誌系統來達到這個目的。在我們的系統中,審計是一項全面服務的一流公民。

- HTH, 達斯蒂

+0

你提到的審計服務,你知道在這個審計的空間相當於_log4j_任何**庫/服務**?或者這是一個人通常自己開發的東西? – rmoestl 2013-10-16 05:38:10

1

這些聽起來像您的客戶可能想要從您的應用程序中查詢或報告的事情 - 顯而易見的選擇是數據庫。

特別是,在這種情況下,我覺得傳統的日誌記錄框架並不合適,因爲當涉及到數據時,您可能會稍後想要在應用程序內訪問日誌框架允許您執行一些沒有意義的事情,例如,您可能能夠根據app.config文件更改日誌記錄的發送位置(如果您嘗試從不同位置讀取該文件,則該文件不太有用)。

這就是說,如果一個日誌框架允許你做的正是你想要已經那麼,什麼心不是在僅僅使用日誌框架爲您的實現和保存自己的努力任何恥辱:

class TransactionLogger 
{ 
    public void Log (Message message) 
    { 
     MyLoggingFramework.Log(message.string, etc...); 
    } 
} 
1

離開記錄器因爲與該計劃有關的事情,而不是業務。它只是一個幫助開發者的工具。

編寫自己的系統來記錄業務事件。如果需要創建記錄的業務需求,則需要您可以控制的某些內容,並且需要使用上面的記錄器來跟蹤其工作原理。

基本上,在你的問題#2。

1

對我來說,商務活動的想法是,它在未來的某個業務處理的作用,從實際觸發業務操作簡單可用的分析什麼。

因此,完全不同的QOS要求。需要自己的API。

Concevicbly最初是映射到日誌記錄,但將來可能會去可靠的消息或數據庫。

0

根據我的經驗,業務事件包含幕後的大量或大量技術操作,只有某些業務事件對業務很重要。

這會在嘗試使用通用日誌記錄方法時產生問題,因此通常在我所使用的系統中都使用這兩種方法。
記錄技術方面以及業務事件的業務事件記錄。

業務事件日誌記錄不使用與技術日誌記錄相同的技術,而是記錄到定製設計的歷史記錄/審計表(有時這些拆分取決於所需的詳細信息),它專門爲每個應用。 (這樣可以使審計人員和用戶的好和快樂。)

這樣可方便報告和信息管理,同時明顯擴大各規範的範圍略有下降。

0

你可以使用它,但你需要的是商業活動監控和事件處理軟件。在我的頭頂,IBM WebSphere Business Monitor提供了此功能。它處理Common Base Event(IBM Web Services分佈式管理Web事件格式標準的IBM實現),然後獲取該數據並創建業務活動儀表板。