首页 > 解决方案 > 无法从类库中获取 Log4net

问题描述

我有一个执行安装所需的例程的类库。从我所研究的一切来看,我相信我的设置是正确的。但是,该例程绝对不会记录任何内容。这是我所拥有的:

  1. 我已添加类库项目作为对宿主项目的引用。

  2. 在我的类库中,我有以下内容:

    private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    
    public InstallDLL() {
      Log.Error("Where are you goinng?");
    }
    
  3. 在宿主应用程序中,我在 AssemblyInfo.cs 类中添加了以下行: [assembly: log4net.Config.XmlConfigurator(Watch = true)]

  4. 最后,这是我的 app.config 文件的内容:

    <configuration>
    
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
      </configSections>
    
      <log4net>
        <appender name="TestAppender" type="log4net.Appender.RollingFileAppender" >
          <file value=".\Log Directory\MyTestAppender.log" />
          <encoding value="utf-8" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <rollingStyle value="Size" />
          <maxSizeRollBackups value="5" />
          <maximumFileSize value="2MB" />
          <staticLogFileName value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%M %C] - %message%newline" />
          </layout>
        </appender>
        <root>
          <level value="ALL" />
          <!-- If the following line is not included the log file will not be created even if log4net is configured with this file. -->
          <appender-ref ref="TestAppender" />
        </root>
      </log4net>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
        </startup>
    </configuration>
    

我必须错过一些东西,但是什么?请记住,主机应用程序的日志记录工作正常......

**** 编辑 ********************************************* ***********************

我想我可能知道这里发生了什么。此项目生成的 .dll 文件在宿主项目运行之前运行,因为它是安装脚本的一部分。我认为宿主项目必须先运行才能初始化 log4net 配置。当我从主机应用程序而不是从安装程序包中调用 .dll 文件中的方法时,log4net 日志记录工作得很好。有谁知道这是否是根本原因,我该如何解决?

标签: c#logginglog4net

解决方案


    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />, Can you check your Target Framework in Assembly properties? 

我只是与我的配置文件比较,我有这个<log4net debug="true">. 你能添加这个吗?


推荐阅读