2010-07-15 57 views
8

我正在寫一個類庫作爲抽象用於登錄我寫的任何應用程序,服務等。我通過使它非常可配置,以適應我遇到的大多數應用程序/服務日誌記錄場景的需求,從而使它體面健壯。將App.config應用到我的DLL程序集?

的配置設計指定的東西,如:

  • 什麼日誌記錄級別寫
  • 寫入到一個日誌文件,各級
  • 寫每
  • 水平單獨的文件
  • 日誌截止(週期性,應用程序事件,字節大小受限)
  • 日誌文件過期(在文件時效後刪除日誌文件)
  • 寫爲純文本或XML
  • 日誌文件名格式規範
  • 是否與日期
  • 父應用程序的名稱
  • 等,等,等...

我的文件名前綴已經閱讀了關於DLL程序集配置的一些其他的stackoverflow問題,它導致了主機程序集/ app的app.config之間的衝突。我相信我的程序集只是提供一個配置文件。

這是一個很好的場景嗎?將我自己的配置文件烘焙到我的項目中以便我的記錄器從XML文件中讀取以檢索配置值可能是一個更好的主意嗎?

+2

查看現有的日誌庫,例如apaches log4net http://logging.apache.org/log4net/index.html - 這個也可以很容易地擴展。也許不值得編寫一個全新的日誌庫。 – 2010-07-15 13:26:20

+0

@bja,感謝您的建議。我爲一個正在工作的項目編寫了大量日誌代碼,並決定將大部分代碼用作未來應用程序的基礎。我之前嘗試過使用日誌框架,並且因爲我的部門而感到沮喪。想要使用.Net 4.0,並且在使用它的時候遇到了一些問題。所以我最終實現了我自己的輕量級日誌記錄。然而,非常感謝這個建議,我通常會同意這個想法,但是它沒有理由不重用我自己的代碼。 – jlafay 2010-07-15 13:32:56

+0

@jlafay無論如何我都會建議看看它們 - 不要重複使用它們的代碼 - 但要看看它們是如何通過App.config文件實現配置的 - 通過應用程序配置日誌框架非常常見。配置文件,並且您可以使用自己的框架遵循相同的練習。 :-) – BrainSlugs83 2016-07-19 02:30:13

回答

8

你可以做的是

  • 創建自定義配置部分(例如使用在COnfiguration Section Designer工具)

  • 把你的組件的配置到一個單獨的MyAssembly.config文件

  • 參考,從您的主機應用程序的配置組件的配置文件:

    <configuration> 
        <configSections> 
         <section name="YourAssembly" 
           type="YourAssembly.ConfigSection, YourAssembly" /> 
        </configSections> 
    
        <YourAssembly configSource="MyAssembly.config" /> 
    </configuration> 
    

這樣一來,就可以「外部化「你的配置到一個單獨的配置文件中,你只有一次(在你的程序集項目中),任何需要它的項目只需要在它自己的配置文件中進行設置。

+0

+1鏈接。多年來,我一直在手動編寫ConfigurationSection和ConfigurationSectionGroup類。這個工具看起來像一個救生員! – Toby 2010-07-15 13:47:53

+0

我認爲這是我的配置需求的最佳解決方案。感謝您的配置部分設計師的鏈接! – jlafay 2010-07-15 14:23:15

3

聽起來像一個自定義配置節會適用於你的情況。許多圖書館,比如企業圖書館都是這樣做的。查看MSDN article關於創建一個。

3

.NET配置機制並不意味着處理DLL的配置文件。您應該使用適當的設置配置您的應用程序,並將它們傳遞給您正在從DLL實例化的類。


可以像設置應用程序一樣爲DLL項目添加設置。所有你需要做的就是手動將相關的部分和條目複製到應用程序的app.config中,它將起作用。

但是,仍然沒有意義的是複製DLL的配置文件。它不會被讀取。

+1

因爲我將用於廣泛的軟件應用程序,使用配置文件實時配置它,我可以快速編輯而不是在實例化記錄器時填充屬性主機應用? – jlafay 2010-07-15 13:28:05

+0

@jlafay - 不,然後你添加一個隱藏的依賴到你的DLL。您仍然可以創建一個配置文件 - 只需讓您的*應用程序*讀取配置文件(或複製到其配置文件的一部分)並將設置傳遞給您的DLL中的類。 (和+1。) – 2010-07-15 13:51:52

+0

Err ...,很多dll都需要.config文件更改(特別是日誌框架dll)。您只需將相關的配置部分添加到您的app.config中,並且它可以在沒有額外的代碼更改的情況下運行。 – BrainSlugs83 2016-07-19 02:21:55

2

另一種機制是爲您的程序集配置一個單獨的配置文件(* .dll.config)。該技術如下所示:http://blog.rodhowarth.com/2009/07/how-to-use-appconfig-file-in-dll-plugin.html

上面,模擬組件的標準app.config技術。

在我看來,dll配置閱讀代碼應該只存在於相應的dll和一個獨立的類中 - 單獨負責從* .dll.config中讀取配置條目。這是以類似於可執行文件的配置文件(app.config)的方式爲程序集配置文件的好方法。

相關問題