我想在使用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>
我想将日志记录级别的字符串值更改为数字。这可能吗?
答案 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>