Уровень ведения журнала не работает - PullRequest
1 голос
/ 11 ноября 2010

Я настроил свое приложение для использования 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 ]

3 голосов
/ 11 ноября 2010

Должно работать, когда вы настраиваете его так:

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

Примечание: я использую значение вместо name в узле уровня (сделайте это и для корневого элемента "level"). Включение внутренней отладки выявит проблему такого рода.

1 голос
/ 11 ноября 2010

Просто подумайте, проверьте свои приложения для журналов, чтобы убедиться, что у них настроено что-то вроде следующего:

<filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="ALL"/>
</filter>
0 голосов
/ 11 ноября 2010

DEBUG - более низкий уровень, чем INFO, поэтому я подозреваю, что сообщения DEBUG регистрируются, потому что корневой регистратор настроен на запись на уровне INFO.

См. этот пост , еслиВы хотите получать сообщения INFO, но не сообщения DEBUG.

...