2010-11-11 137 views
1

我已經配置我的應用程序使用的log4net如下:日誌記錄級別不工作

<log4net> 
    <appender name="SQL_Comandos" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="X" /> 
     <commandText value="INSERT INTO X ([Date],[Thread],[Level],[Logger],[Message],[Exception],[Usuario]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @usuario)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%thread" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%logger" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%message" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@exception" /> 
     <dbType value="String" /> 
     <size value="2000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@usuario" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%X{usuario}" /> 
     </layout> 
     </parameter> 
    </appender> 
    <appender name="SQL_Hibernate" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="X" /> 
     <commandText value="INSERT INTO X ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%thread" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%logger" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%message" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@exception" /> 
     <dbType value="String" /> 
     <size value="2000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
    </appender> 
    <root> 
     <level name="INFO" /> 
     <appender-ref ref="SQL_Comandos" /> 
    </root> 
    <logger name="NHibernate" additivity="false" > 
     <level name="ERROR" /> 
     <appender-ref ref="SQL_Hibernate" /> 
    </logger> 

他們完美地工作,但所有日誌記錄都保存調試信息,甚至已經配置爲不這樣做。我在這裏錯過了什麼?

回答

3

在配置像這樣它應該工作:

<logger name="NHibernate" additivity="false" > 
    <level value="ERROR" /> 
    ... 

注:我在一級節點使用而不是根「級」元素(也這麼做)。打開內部調試將揭示這種問題。

+0

也做到了,謝謝。下次我會知道使用內部調試! – viniciushana 2010-11-11 20:11:15

1

只是一個想法,請檢查你的日誌附加目的地,看看他們是否有類似如下的配置:

<filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="ALL"/> 
</filter> 
+0

嗯,不是真的,他們沒有任何過濾器。 – viniciushana 2010-11-11 18:47:47

+0

@scardazzi - 嗯...你可以發佈完整的log4net配置嗎? – Kev 2010-11-11 18:51:42

+0

你走了,我用完整的配置編輯了這個問題。 – viniciushana 2010-11-11 19:03:56

0

DEBUG低於INFO一個較低的水平,所以我懷疑是調試信息被記錄,因爲根記錄器被設置爲在INFO級別登錄。如果您想獲取INFO消息但不是DEBUG消息,請參閱this post

+0

我相信DEBUG實際上是一個更高的層次。 – viniciushana 2010-11-11 20:12:38

+0

確認:有云的水平,按優先順序: – viniciushana 2010-11-18 18:31:31

+0

ALL DEBUG 信息 WARN ERROR FATAL OFF – viniciushana 2010-11-18 18:31:41