log4net将无法从app.config中读取

Eve*_*ien 24 log4net log4net-configuration

我为log4net配置了两个相同的项目.一个项目记录正常; 但是,另一个根本没有记录.

Logger在不登录的回报项目IsFatalEnabled = false,IsErrorEnabled = false,IsWarnEnabled = false,IsInforEnabled = falseIsDebugEnabled = false.

我已经从一个项目复制并粘贴到另一个项目中,完全替换了文件并尝试删除所有空格.

什么可能导致一个项目没有正确地从app.config读取正确的级别?

的app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="logfile.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date: %-5level – %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Program.cs中

using log4net;

class Program
{
    private static readonly ILog Log = LogManager.GetLogger("SO");

    static void Main(string[] args)
    {
        Log.Info("SO starting");
    }
}
Run Code Online (Sandbox Code Playgroud)

Eve*_*ien 43

似乎app.config文件未配置为由log4net监视.

我添加了以下行,AssemblyInfo.cs现在启用了日志记录:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

很奇怪,因为我没有将这一行添加到正在运行的项目中.

编辑:

看起来正在运行的项目确实有这条线.我一定忘记了.

// This will cause log4net to look for a configuration file 
// called [ThisApp].exe.config in the application base 
// directory (i.e. the directory containing [ThisApp].exe) 
// The config file will be watched for changes. 
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

  • 我的情况大致相同 - 我将一个项目复制到另一个项目,但是使用我的实用程序代码将自定义程序集中的log4net"包装" - 尽管你提到的神奇线条在新项目中,但我的自定义程序集的AssemblyInfo.cs中缺少了它(我的印象是所有配置都必须在包含入口点的程序集中完成 - 错误) (3认同)
  • 我必须为VB.NET应用程序执行此操作...语法:<Assembly:log4net.Config.XmlConfigurator(Watch:= true)> (2认同)