2013-09-24 38 views
0

以下是日誌記錄問題。什麼是統一日誌的乾淨方式?

有一個asp.net網站。該網站的主要功能是電子郵件列表(保存在數據庫中)。每次出現錯誤時,數據都會通過nlog保存到文件中。該網站有一個管理面板。管理面板列表讀取網站的錯誤日誌。

有一名工人。工作人員連接到Exchange Server並檢查具有匹配主題的電子郵件。匹配模式的電子郵件將保存到數據庫。每次出現錯誤時,數據都會通過nlog保存到不同的文件中。

網站和工作人員都使用相同的記錄器類。網站的web.config中的設置和worker的application.config只是指向不同的目標文件。

這是新功能。管理面板也應該列出工作人員的錯誤。現在,我有多種方式去解決這個問題。

選項1:網站將找出工作日誌文件的位置,然後它將讀取工作日誌文件。

選項2:製作一個新的工人/派對。這將處理網站和工作人員的日誌記錄。它可以將兩組錯誤都保存在一個日誌中,或者甚至可以在數據庫中保存一個新表。

選項3:將網站和worker文件都配置爲指向同一個目標文件,但我不知道azure文件系統的目錄結構。

最乾淨的方法是什麼?

回答

1

您可以做的是使用Windows Azure診斷的自定義日誌功能。使用NLog將您的Web角色和輔助角色寫入不同或相同的目標。這些文件將保存在每個虛擬機的本地存儲上。然後使用Windows Azure診斷程序,將這些文件定期傳輸到Windows Azure Blob存儲,並讓第三方工作人員定期處理這些Blob。

看看Cloud Service Fundamentals項目在這裏:http://code.msdn.microsoft.com/windowsazure/Cloud-Service-Fundamentals-4ca72649。這是由Windows Azure CAT團隊完成的。它利用NLog收集日誌數據,然後將日誌數據保存在稱爲遙測日誌的容器中。一旦數據在該容器中,它就會定期輪詢數據並將其推入SQL Azure數據庫。

+0

我們的預算緊張。這會導致額外費用嗎? – user513788

+0

將這些數據轉換爲blob存儲和存儲費用會有收費,但這些費用並不重要。其他費用將用於處理日誌數據的第三個輔助角色,但您可以使用解決方案中已有的輔助角色執行此任務。 –

1

將nlog條目發送到數據庫而不是本地文件。
https://github.com/nlog/NLog/wiki/Database-target
如果條目太多,只需將FATAL或ERROR發送到數據庫。

+0

是的,但是如果NLog和數據庫之間存在一個暫時連接問題會發生什麼,這是我發現的一個問題,但沒有解決問題... http://stackoverflow.com/questions/37588791/is-there -a路到有-n日誌手柄重試次數,當寫入到一個數據庫-的specifica – SteveC

相關問題