2013-04-02 205 views
2

我設置了一個dll作爲第三方dll用於不同的應用程序。我想讓這個dll擁有自己的日誌記錄,因此外部應用程序不必處理任何設置(我不相信它們使用與我們相同的日誌記錄)。我讀過這可能不是最好的解決方案,但這是我得到的任務。我們希望使用log4net。我已經看過這裏的一些其他問題,他們提到它可以通過代碼進行配置,但是,我遇到的主要問題是沒有切入我們的代碼來配置log4net的切入點。我很好奇,如果我應該放棄dll配置自己,並有一個方法,由配置dll的日誌記錄的輔助應用程序調用,或者有更好的方法來解決這個問題。任何輸入將不勝感激在dll中配置log4net日誌記錄

+0

您可以配置log4net多種方式,包括使用xml配置文件。您需要通過啓動方法配置日誌記錄設置,或通過xml設置文件設置配置。 –

+0

請澄清 - 你是否想要配置log4net供你的DLL中的類使用的示例代碼,或者你需要關於從你的DLL中調用這個示例代碼的地方/方法的建議? – PaulF

+0

@PaulF我不需要示例代碼,我目前已經建立並運行了,但我並不是解決方案的狂熱粉絲。基本上我有這樣的: '私人無效ConfigureLogging() XmlConfigurator.Configure(新System.IO.FileInfo(string.Format(@「{0} \ {1}」, )); }' 這是在dll的入口點上調用的,以確保日誌記錄知道要使用哪個設置文件。我希望找到比這更好的解決方案。 – Thomas

回答

5

您可以編程配置log4net。也許將此代碼添加到您的DLL的構造函數。

if (!log4net.LogManager.GetRepository().Configured) 
{ 
    // my DLL is referenced by web service applications to log SOAP requests before 
    // execution is passed to the web method itself, so I load the log4net.config 
    // file that resides in the web application root folder 
    var configFileDirectory = (new DirectoryInfo(TraceExtension.AssemblyDirectory)).Parent; // not the bin folder but up one level 
    var configFile = new FileInfo(configFileDirectory.FullName + "\\log4net.config"); 

    if (!configFile.Exists) 
    { 
     throw new FileLoadException(String.Format("The configuration file {0} does not exist", configFile)); 
    } 

    log4net.Config.XmlConfigurator.Configure(configFile); 
} 
+0

感謝您的支持。這就是我們最終做的最後只是從未更新過的問題。 – Thomas