2010-01-29 57 views
5

簡單的問題:看標題。我使用.NET 3.5。在.NET中是否有內置的日誌記錄框架?

詳述: 我正在構建一個插件,它將在運行時加載到第三方應用程序中。主應用程序使用log4net作爲其日誌框架。但是,它不公開根記錄器,所以我們無法登錄。 (我已經向上遊開發者提出了這個問題,他們將在未來發布的版本中修復此問題,因此在此期間我需要提供其他內容)

系統的另一個限制是當它收到通知它應該加載一個本地系統中不存在的插件,它將從它所連接的服務器上拉下該插件(如果它存在於服務器上),但它只能拉下插件所在的程序集。這意味着沒有外部程序集,也沒有.config或任何其他文件可以與插件部署。

這讓我只有內置的.NET程序集和我的插件程序集中的所有東西。但是,我不想通過構建自己的另一個日誌記錄框架來重新發明輪子,所以我想知道這個問題的最佳方法是什麼。

我寧願記錄到文件,也想避免將東西轉儲到Windows事件日誌中。

+0

「它不公開根記錄器」 - 你不能只添加一個對log4net.dll的引用並直接訪問根記錄器嗎? – Joe 2010-01-29 05:59:41

+1

我試着創建我自己的根記錄器,並試圖使用父應用程序'無濟於事。 Log4net只允許每個應用程序使用一個根記錄器,而父應用程序已經創建一個。如果他們暴露在某個地方,我可以使用它,但事實並非如此。 我不確定它是每個應用程序的一個根記錄器還是每個AppDomain的一個。如果它是每個AppDomain的一個,我可以嘗試從我的插件創建我自己的AppDomain,然後創建我自己的根記錄器。 – alimbada 2010-01-29 18:53:12

回答

10

兩個主要選擇是在那裏:

TraceDebug類它們是.NET框架(在System.Diagnostics命名空間內)的一部分可能是你最好的選擇。這些提供了對各種運行時可配置監聽器進行輕量級日誌記錄的工具,可以寫入文件,事件日誌和其他幾個地方。

聽起來你不能爲你的應用程序添加額外的類,但是如果你可以的話,我建議你使用微軟企業庫,這是一個外部日誌框架,它由微軟提供,與.NET代碼。

+0

我本來也在想企業圖書館,但是在確認我懷疑這是一家外部圖書館後,我停止了追求這種思路。 我現在會嘗試跟蹤和調試。乾杯。 :) – alimbada 2010-01-29 01:07:24

-1

用於跟蹤和調試的+1。您可能會要求上游開發人員實施TraceListener,將您的消息轉發到Log4Net中,以便所有內容都將以單個文件形式存在。

他們也可能會考慮Gibraltar查看和分析log4net數據。事實上,如果上游開發商整合直布羅陀,它會自動合併log4net和Trace數據。

更新:我們已經使我們的日誌查看器免費!

閱讀我們的博客更多關於爲什麼our best log viewer is now FREE

或者訪問我們的網站learn more或只是get the bits now!