2012-05-10 24 views
4

自分自身のログを自分のGeneral Logエラーログファイルに結びつけることに成功しました。log4net - NHibernateを自分のアプリケーションのログファイルから取り出して、それ自身のファイルに保存します

私はデバッグを助けるために生成するSQLステートメントを記録したいが、それ自身のファイルにNHibernateを追加した。

以下のような現在の設定では、NH出力は一般ログファイル(CommunicationsAppender)とそれ自身のファイル(複製されています)で終わっています。 CommunicationsAppenderのアウトプットをどのように保つのですか?

<log4net> 
    <appender name="NHibernateAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:\logs\NHibernate.log"/> 
     <appendToFile value="true"/> 
     <maximumFileSize value="1000KB"/> 
     <maxSizeRollBackups value="10"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %logger %level - %message%newline"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <levelMin value="DEBUG" /> 
      <levelMax value="FATAL" /> 
     </filter> 
     <filter type="log4net.Filter.LoggerMatchFilter"> 
      <loggerToMatch value="NHibernate.SQL" /> 
      <acceptOnMatch value="true" /> 
     </filter> 
     <filter type="log4net.Filter.DenyAllFilter" /> 
    </appender> 
    <appender name="CommunicationsAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\Logs\Communications Service.log"/> 
     <appendToFile value="true"/> 
     <maximumFileSize value="10000KB"/> 
     <maxSizeRollBackups value="10"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %logger - %message%newline"/> 
     </layout> 

     <filter type="log4net.Filter.LevelRangeFilter"> 
      <levelMin value="DEBUG" /> 
      <levelMax value="WARN" /> 
     </filter> 
     <filter type="log4net.Filter.LoggerMatchFilter"> 
      <loggerToMatch value="CommunicationsLogger" /> 
      <acceptOnMatch value="true" /> 
     </filter> 
     <filter type="log4net.Filter.DenyAllFilter" /> 
    </appender> 
    <appender name="CommunicationsErrorAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\Logs\Communications Service Errors.log"/> 
     <appendToFile value="true"/> 
     <maximumFileSize value="10000KB"/> 
     <maxSizeRollBackups value="10"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %logger - %message%newline"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <levelMin value="ERROR" /> 
      <levelMax value="FATAL" /> 
     </filter> 
     <filter type="log4net.Filter.LoggerMatchFilter"> 
      <loggerToMatch value="CommunicationsLogger" /> 
      <acceptOnMatch value="true" /> 
     </filter> 
    </appender> 

    <root> 
     <!-- Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> 
     <priority value="ALL"/> 
     <!--<appender-ref ref="LogToFile"/>--> 
     <appender-ref ref="CommunicationsAppender" /> 
     <appender-ref ref="CommunicationsErrorAppender" /> 
     <appender-ref ref="NHibernateAppender" /> 
    </root> 
    <logger name="NHibernate.SQL"> 
     <level value="DEBUG"/> 
     <appender-ref ref="NHibernateAppender"/> 
    </logger> 
    <logger name="NHibernate"> 
     <level value="OFF" /> 
    </logger> 
</log4net> 

答えて

6

ルートからNHibernateのアペンダを削除しても、あなたのNHibernateのアペンダにadditivity="false"を追加します。

<root> 
    <!-- Value of priority may be ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> 
    <priority value="ALL"/> 
    <!--<appender-ref ref="LogToFile"/>--> 
    <appender-ref ref="CommunicationsAppender" /> 
    <appender-ref ref="CommunicationsErrorAppender" /> 
</root> 

<logger name="NHibernate.SQL" additivity="false"> 
関連する問題