2015-02-11 42 views
0

我有一個非常基本的Log4Net配置文件,用於我的C#DLL。日誌工作正常,如果我創建一個可執行文件而不是DLL在獨立模式下進行測試,並且它在過去也可以正常運行。但是,當我切換到DLL模式(類庫)與其他應用程序一起工作時,該DLL不會記錄。相反,當它加載配置文件(XmlConfigurator.Configure(文件))我看到了無差錯 「你已經嘗試設置一個空的水平,以根」C#DLL中的Log4Net無法加載配置

配置文件

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
</configSections> 
<log4net> 
<root> 
    <level value="Full" /> 
    <appender-ref ref="LogFileAppender" /> 
</root> 
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
    <file value="log/eft.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="3" /> 
    <maximumFileSize value="2MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="[%d] %-5p (%logger{1}:%line) - %m%n" /> 
    </layout> 
</appender> 
</log4net> 
</configuration> 

我有嘗試通過代碼設置日誌配置,即使這不起作用。我沒有得到任何錯誤,但它仍然沒有記錄。自從我以管理員身份登錄後,我擁有創建/寫入文件的所有權限。

使用代碼而不是配置文件 -

 Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 
     hierarchy.Root.RemoveAllAppenders(); 
     hierarchy.Root.Level = log4net.Core.Level.All; 
     hierarchy.Configured = true; 

     FileAppender fileAppender = new FileAppender(); 
     fileAppender.AppendToFile = true; 
     fileAppender.LockingModel = new FileAppender.MinimalLock(); 
     fileAppender.File = "log.txt"; 
     PatternLayout pl = new PatternLayout(); 
     pl.ConversionPattern = "%d [%2%t] %-5p [%-10c] %m%n%n"; 
     pl.ActivateOptions(); 
     fileAppender.Layout = pl; 
     fileAppender.ActivateOptions(); 
     log4net.Config.BasicConfigurator.Configure(fileAppender); 

可能是什麼問題?

+1

什麼進程託管你的DLL? log4net配置需要位於該進程的配置文件中。 – Polyfun 2015-02-11 17:11:29

+0

有一個第三方應用程序正在與用C++編寫的DLL進行通信,後者依次調用使用C#編寫的我的DLL。我只用C#寫了一個,不能碰其他兩個。 – highflyer 2015-02-11 17:14:39

+1

_you試圖設置一個空值爲root_ - '' - 沒有稱爲Full的級別。改用'All'。 – stuartd 2015-02-11 18:24:11

回答

0

假設第三方應用程序被稱爲ThirdPartyApp.exe,並且這是託管您的DLL,您需要創建一個ThirdPartyApp.exe.config包含您發佈的log4net配置。

+0

沒有工作。還是一樣的錯誤。在完成配置之後,我嘗試了這個 - 「bool val = log4net.LogManager.GetRepository()。Configured;'並且它返回true。不知道爲什麼沒有設置根級別。即使手動設置根級別也不能幫助創建日誌文件 - ((log4net.Repository.Hierarchy.Logger)logger.Logger).Level = log4net.Core.Level.All;' – highflyer 2015-02-11 17:31:49