码迷,mamicode.com
首页 > 数据库 > 详细

Log4net 自定义信息(字段)存入数据库

时间:2015-04-10 18:06:21      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:log4net   数据库   

最近在研究这个东东,按照标准的功能,Log4net只提供下面信息的记录:

CREATE TABLE [dbo].[A_System_Logging] (
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,
              [Message] [varchar] (4000) NOT NULL,
              [Exception] [varchar] (2000) NOT NULL, 
            ) ON [PRIMARY]

而我们经常需要记录一些额外的信息,比如用户的ID...我在网上搜索了一下,好多人文章都非常复杂,难以理解,如果真的仿照去做,又恐很难实现。

于是在国外网站搜索了一下,问题立马解决,非常简单,易于理解,一下就成功了:

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 you 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";
...
看见没,只要把参数加入context中即可,无需额外的类实现,一下就成功了。

详细参照下面链接:

http://stackoverflow.com/questions/12139486/log4net-how-to-add-a-custom-field-to-my-logging

Log4net 自定义信息(字段)存入数据库

标签:log4net   数据库   

原文地址:http://blog.csdn.net/hailanzhijia/article/details/44980649

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!