3

以下は、app.configのlog4netのセクションです。

   <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,     log4net" />
   </configSections>      
   <log4net debug="true">
     <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="${TMP}\SRG\Logs\Log_%env{USERNAME}_%date{yyyyMMdd}.log" />
      <appendToFile value="true" />
      <bufferSize value="20" />
      <LockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
      <header type="log4net.Util.PatternString" value="[Log Starts]%newline" />        
      <footer type="log4net.Util.PatternString" value="[Log Ends]%newline" />        
      <conversionPattern value="%date [%username] - %message%newline" />
      </layout>
     </appender>  

     <logger name="SRGApplicationDebugLog">
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
     </logger>
   </log4net>  

問題1:アプリケーションを起動するたびに、ヘッダーとフッターが2倍余分に取得されますが、それを回避する必要があります。

[ログの開始]
[ログの終了]
[ログの開始]
[ログの終了]
[ログの開始]
2012-11-0812:25:03,376[ユーザー名]-アプリケーションが開始されました
[ログの終了]

問題2:2つの空のヘッダーフッターペアがどこから来ているのかわかりません。

  1. 私は以下のようなロガーを作成しています:
_debugLogger = LogManager.GetLogger("SRGApplicationDebugLog");    
XmlConfigurator.Configure(); 
  1. ロガーを使用するには:
_debugLogger.DebugFormat(logMessage);    
  1. log4netのAssemblyInfo.csにこの行を明示的に追加しました
[assembly: XmlConfigurator(Watch = true)]    

質問:太字で問題を修正したい

4

2 に答える 2

7

あなたは必要ありません

 XmlConfigurator.Configure();

あなたが持っている場合

[assembly: XmlConfigurator(Watch = true)]

両方があると、2つのヘッダーと2つのフッターになります。

なぜ3セットあるのかというと、おそらく XmlConfigurator.Configure()2回電話をかけているのでしょう。

于 2012-11-08T17:51:02.727 に答える
0

XmlConfigurator.Configure()を複数の場所に配置すると、複数のヘッダーとフッターのペアが作成される可能性があります。

XmlConfigurator.Configure()は、ソリューションの1か所でのみ定義する必要があります。>より良いアプローチはそれをAssemblyInfo.csに置くことです。

于 2012-11-09T05:28:12.220 に答える