我有一个基于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 -> %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 -> %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之前进行登录,它也会记录到控制台和文件。这个班级不会记录。
任何帮助都会非常好。提前谢谢。
答案 0 :(得分:0)
我找到了解决方案。我正在使用自定义LogPatternLayout,它还尝试初始化MainService,因此在可以读取LogPatternLayout并将其初始化到Logger之前初始化MainService。因此,在MainService初始化后进行日志记录。