Log4Net创建空的日志文件,而不是实际记录

Lew*_*nci 6 c# log4net

我在应用程序中使用Log4Net时遇到问题。这是我的app.config文件...

    <configuration>
  <log4net>
    <root>
      <level value="INFO"/>
      <appender-ref ref="FileAppender" />
    </root>
      <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="mylogfile.txt" />
        <appendToFile value="true" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <levelMin value="INFO" />
          <levelMax value="FATAL" />
        </filter>
      </appender>

  </log4net>


  <configSections>
    <section name="log4net"
             type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" 
         />
  rest of app.config under here...
Run Code Online (Sandbox Code Playgroud)

这是我的Program.cs的顶部

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

我在表单子类的顶部也有这个(这是上面的重复吗?)

 private static readonly log4net.ILog log = log4net.LogManager.GetLogger
                (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)

并且此代码在表单加载中(不执行任何操作)

log.Info("Initializing...");
            log.Fatal("blah");
Run Code Online (Sandbox Code Playgroud)

记录器创建一个名为“ mylogfile.txt”的日志文件,但实际上未向其中写入任何内容。

我知道我做错了什么,但我无法轻易发现它是什么:(任何帮助都会很棒。

Lew*_*nci 2

几秒钟后我自己就弄清楚了。app.config 是错误的(毫不奇怪,考虑到我写的)。

这是正在运行的 app.config 启动。

<configuration>
  <configSections>
    <section name="log4net"
             type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"

             />
   <--- other section groups here, you will have these too --->
    </sectionGroup>
  </configSections>
  <log4net>
    <root>
      <level value="INFO"/>
      <appender-ref ref="FileAppender" />
    </root>
      <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="mylogfile.txt" />
        <appendToFile value="true" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <levelMin value="INFO" />
          <levelMax value="FATAL" />
        </filter>
      </appender>

  </log4net>
Run Code Online (Sandbox Code Playgroud)

我罐装了

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

并将其替换为 log4net.Config.XmlConfigurator.Configure(); (在这里,在 Program.cs 的主程序启动中调用它)。

    static void Main()
    {
        log4net.Config.XmlConfigurator.Configure();

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new frmMOEBackup());
    }
Run Code Online (Sandbox Code Playgroud)

它有效!感谢所有看过我的问题的人:)