2

log4net使用時のログレベルに相当する数値をログに記録したいと考えています。つまり、現在、次のコマンド テキストを使用してデータベースにログを記録しています。

<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

   <parameter>
    <parameterName value="@log_level" />
    <dbType value="String" />
    <size value="50" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level" />
    </layout>
  </parameter>

ログレベルの文字列値を数値に変更したいと思います。これは可能ですか?

4

1 に答える 1

5

私はこれをテストしませんでしたが、次のように動作するはずです。

次のように独自のコンバーターを作成できます。

sealed class NumericLevelPatternConverter : PatternLayoutConverter 
{
    override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
    {
        // maybe you need to call ToString() on the value property
        writer.Write( loggingEvent.Level.Value ); 
    }
}

および構成ファイルで:

<layout type="log4net.Layout.PatternLayout">
    <converter>
        <name value="levelId" />
        <type value="YourNamespace.NumericLevelPatternConverter" />
    </converter>
    <conversionPattern value="%levelId" />
</layout>
于 2012-09-19T17:41:16.867 に答える