2016-07-21 14 views
0

私はMVCベースのC#Windows Formsアプリケーションを持っています。私はprivate static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);を呼び出し、その後、私は私のメインサービスの初期化、最初の林で、主な方法でクラスはlog4netでファイルにログを出力しません

<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> 

mainService = MainFactory.getMainServiceInstance(); 

を私はapp.configファイルで次の構成を持っていますそして、問題があります。 mainメソッド内のすべてのログ出力は、ファイルとコンソール、およびその他のサービス(MainServiceの基本サービス)にも正常に記録されます。ログに記録されない唯一のクラスはMainServiceです。これでの好奇心は、このクラスのログはしばらくしてから始まるということです。フィルターは一切使っていません。私はlog4netデバッグを有効にしました:

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

少なくともエラーはありません。だから私は、初期化が完了すると思います。また、MainServiceを初期化する前にログを記録すると、コンソールとファイルにも記録されます。このクラスだけはログに記録されません。

非常に助かります。前もって感謝します。

答えて

0

解決策を見つけました。私はMainServiceを初期化しようとするカスタムLogPatternLayoutを使用しているため、LogPatternLayoutを読み込み、Loggerに初期化する前にMainServiceが初期化されます。したがって、MainServiceの初期化後にロギングが行われます。

関連する問題