记录log4net数字级别值

时间:2012-09-19 11:36:52

标签: log4net

我想在使用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>

我想将日志记录级别的字符串值更改为数字。这可能吗?

1 个答案:

答案 0 :(得分: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>