类不会使用log4net登录到文件

时间:2016-07-21 14:17:44

标签: c# logging log4net

我有一个基于MVC的C#Windows Forms应用程序。我在app.config文件中有以下配置:

<log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="LogConsoleAppender"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
   <appender name="LogConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="QAC.Source.Services.Log.LogPatternLayout">
        <conversionPattern value="%date    %level    [Thread: #%thread]    %message              [%logger -&gt; %M]%newline"/>
      </layout>
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logs/QAC_"/>
      <datePattern value="yyyy-MM-dd_HH-mm-ss'.log'"/>
      <staticLogFileName value="false"/>
      <appendToFile value="false"/>
      <rollingStyle value="Date"/>
      <maxSizeRollBackups value="50"/>
      <maximumFileSize value="10MB"/>
      <layout type="QAC.Source.Services.Log.LogPatternLayout">
        <conversionPattern value="%date    %level    [Thread: #%thread]    %message              [%logger -&gt; %M]%newline"/>
      </layout>
    </appender>
  </log4net>

在main方法中,在第一个lin中,我调用private static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);然后我初始化我的主服务:

mainService = MainFactory.getMainServiceInstance();

还有问题。 main方法中的所有日志输出都成功记录到文件和控制台,以及其他服务(MainService的基础服务)。唯一没有记录的类是MainService。好奇心是,这个类的日志记录在一段时间后开始。我没有使用任何过滤器。我已经开启了log4net调试:

<add key="log4net.Internal.Debug" value="true"/>

,但至少没有错误。所以我认为,初始化会经历。此外,如果我在初始化MainService之前进行登录,它也会记录到控制台和文件。这个班级不会记录。

任何帮助都会非常好。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我正在使用自定义LogPatternLayout,它还尝试初始化MainService,因此在可以读取LogPatternLayout并将其初始化到Logger之前初始化MainService。因此,在MainService初始化后进行日志记录。

相关问题