log4net的,如何将自定义字段添加到我的日志 [英] Log4Net, how to add a custom field to my logging
问题描述
我用的是log4net.Appender.AdoNetAppender附加目的地。结果
我的log4net的表有以下字段 [日期],[主题],[等级],[记录器],[信息],[异常]
我需要另一个字段添加到log4net的表(如SalesId),但我怎么会在我的XML和code指定日志SalesId记录一个错误或信息消息时?
例如。 log.Info(SomeMessage,SalesId)
下面是log4net的XML
<追加程序名称=SalesDBAppenderTYPE =log4net.Appender.AdoNetAppender>
&所述; BUFFERSIZE值=1/>
< connectionType值=System.Data.SqlClient.SqlConnection/>
<连接字符串值=数据源= .../>
< CommandText中值=INSERT INTO log4net的([日期],[主题],[等级],[记录器],[信息],[例外])VALUES(@log_date,@thread,@log_level,@Logger,@message ,抛出)/>
<&参数GT;
<参数名称值=@ LOG_DATE/>
< DBTYPE值=日期时间/>
<布局类型=log4net.Layout.RawTimeStampLayout/>
< /参数>
<&参数GT;
<参数名称值=@丝/>
< DBTYPE值=字符串/>
<大小值=255/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%线程/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@ LOG_LEVEL/>
< DBTYPE值=字符串/>
<大小值=50/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%的水平/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@记录器/>
< DBTYPE值=字符串/>
<大小值=255/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%记录器/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@消息/>
< DBTYPE值=字符串/>
<大小值=4000/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%消息/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@异常/>
< DBTYPE值=字符串/>
<大小值=2000/>
<布局类型=log4net.Layout.ExceptionLayout/>
< /参数>
< /附加器>
1)修改命令文本: INSERT INTO log4net的([日期],[主题],[等级],[记录仪] [信息],[例外],[MyColumn])VALUES(@log_date,@thread,@log_level,@Logger,@message,抛出,@CustomColumn)
2)添加参数定义为自定义列:
<&参数GT;
<参数名称值=@ CustomColumn/>
< DBTYPE值=字符串/>
<大小值=255/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%{属性} CustomColumn/>
< /布局>
< /参数>
3)然后使用log4net的的上下文值传送到参数之一:
//线程性能...
log4net.LogicalThreadContext.Properties [CustomColumn] =自定义值;
log.Info(信息);// ...或全局属性
log4net.GlobalContext.Properties [CustomColumn] =自定义值;
I use the log4net.Appender.AdoNetAppender appender.
My log4net table are the following fields [Date],[Thread],[Level],[Logger],[Message],[Exception]
I would need to add another field to the log4net table (e.g SalesId), but how would I specify in my xml and in code to log the "SalesId" when logging a Error or Info message?
e.g. log.Info("SomeMessage", SalesId)
Here's the log4net xml
<appender name="SalesDBAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value ="System.Data.SqlClient.SqlConnection" />
<connectionString value="Data Source=..." />
<commandText value="INSERT INTO Log4Net ([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>
1) Modify the command text: INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception],[MyColumn]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @CustomColumn)
2) Add the parameter definition for the custom column:
<parameter>
<parameterName value="@CustomColumn"/>
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{CustomColumn}" />
</layout>
</parameter>
3) Then use one of log4net’s contexts to transfer values to the parameter:
// thread properties...
log4net.LogicalThreadContext.Properties["CustomColumn"] = "Custom value";
log.Info("Message");
// ...or global properties
log4net.GlobalContext.Properties["CustomColumn"] = "Custom value";
这篇关于log4net的,如何将自定义字段添加到我的日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!