【问题标题】:Cannot get Log4net to work from Class Library无法从类库中获取 Log4net
【发布时间】:2018-07-19 16:10:12
【问题描述】:

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

  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 日志记录工作得很好。有谁知道这是否是根本原因,我该如何解决?

【问题讨论】:

  • 不是重复的。我已经将程序集引用添加到 AssemblyInfo.cs 文件中。
  • 在你的应用入口处添加log4net.Config.XmlConfigurator.Configure();。以static void Main(string[] args) 方法为例。
  • @Peska 没有影响。 :(
  • 编辑后:使用相同的Configure 方法,如上所述。将您的 log4net 配置移动到一个单独的文件中,例如 log4net.config,然后像这样使用它:XmlConfigurator.Configure(new FileInfo("log4net.config"));
  • @Peska - 为什么你认为这会对这个问题产生不同的影响?

标签: c# logging log4net


【解决方案1】:
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />, Can you check your Target Framework in Assembly properties? 

我刚刚比较了我的配置文件,我有这个&lt;log4net debug="true"&gt;。可以加一下吗?

【讨论】:

  • 我刚刚比较了我的配置文件,我有这个 。你能添加这个吗?
猜你喜欢
  • 1970-01-01
  • 2013-11-26
  • 2018-12-20
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 2012-10-14
  • 2017-04-29
  • 2021-08-15
相关资源
最近更新 更多