我有一個非常基本的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);
可能是什麼問題?
什麼進程託管你的DLL? log4net配置需要位於該進程的配置文件中。 – Polyfun 2015-02-11 17:11:29
有一個第三方應用程序正在與用C++編寫的DLL進行通信,後者依次調用使用C#編寫的我的DLL。我只用C#寫了一個,不能碰其他兩個。 – highflyer 2015-02-11 17:14:39
_you試圖設置一個空值爲root_ - '' - 沒有稱爲Full的級別。改用'All'。 –
stuartd
2015-02-11 18:24:11