C#DLL中的Log4Net无法加载配置

时间:2015-02-11 17:06:26

标签: c# .net dll log4net log4net-configuration

我有一个非常基本的Log4Net配置文件用于我的C#DLL。如果我创建一个可执行文件而不是DLL来在独立模式下进行测试,那么日志记录工作正常,并且它在过去也可以正常使用exe。但是当我切换到DLL模式(类库)以使用其他应用程序时,DLL就不会记录。相反,当它加载配置文件(XmlConfigurator.Configure(file))时,我看到错误 - “你试图将空级别设置为root”

配置文件

<?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>

我也试过通过代码设置日志配置,即使这样也行不通。我没有得到任何错误,但它仍然没有记录。我拥有创建/写入文件的所有权限,因为我以admin身份登录。

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

       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 个答案:

答案 0 :(得分:0)

假设第三方应用程序名为ThirdPartyApp.exe,并且这是托管您的dll,您需要创建一个包含您发布的log4net配置的ThirdPartyApp.exe.config。