这种方法比第一种方法麻烦些

Log4Net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration> <!-- Author:GaoBingBing-->
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections> <log4net> <!--写入到数据库-->
<appender name="ADONetAppender_DbServer" type="log4net.Appender.AdoNetAppender">
<!--错误队列数据达到5个才持久化到数据库-->
<bufferSize value="" />
<param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>
<param name="ConnectionString" value="Data Source=ip;initial catalog=test;user id=test;password=****;pooling=true;min pool size=1; max pool size=5;Connection Timeout=100;"/>
<commandText value="INSERT INTO xiao_log(Date,Thread,Level,Logger,Message,UserId,UserName)VALUES(@log_date, @thread, @log_level, @logger, @message,@userid,@username)"/>
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
</layout>
<!-- <layout type="log4net.Layout.RawTimeStampLayout"/>-->
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value=""/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter> <!--自定义字段--> <!--方法二-->
<parameter>
<parameterName value="@userid"/>
<dbType value="String" />
<size value="" />
<layout type="Log4Net.MyLayout">[注意了:这里的Log4Net是命名空间 ,MyLayOut是类名]
<conversionPattern value="%userid" />
</layout>
</parameter>
<parameter>
<parameterName value="@username"/>
<dbType value="String" />
<size value="" />
<layout type="Log4Net.MyLayout">
<conversionPattern value="%username" />
</layout>
</parameter> </appender>
<root>
<level value="ALL"/>
<appender-ref ref="ADONetAppender_DbServer"/> </root>
<!-- Specify the level for some specific categories -->
<logger name="iNotes">
<!-- <appender-ref ref="B" /> -->
<level value="ALL"/>
<appender-ref ref="ADONetAppender_DbServer"/> </logger> </log4net>
</configuration>
创建LogMessage.cs,类里面是所有的自定义字段属性

namespace Log4net
{
public class LogMessage
{
public string _userid; public string _username; public LogMessage() { } public LogMessage(string userId, string userName)
{
_userid = userId;
_username = userName;
} public string UserId
{
get { return _userid; }
set { _userid = value; }
} public string UserName
{
get { return _username; }
set { _username = value; }
} }
}
创建  ParemterContent.cs  添加参数转换器类,每个字段一个模式转化类

namespace Log4net
{
public class ParemterContent
{
internal sealed class UserIdParam : PatternLayoutConverter
{
// Methods
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
LogMessage content = loggingEvent.MessageObject as LogMessage;
if (content != null)
{
writer.Write(content.UserId);
}
}
} internal sealed class UserNameParam : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
LogMessage content = loggingEvent.MessageObject as LogMessage;
if (content != null)
{
writer.Write(content.UserName);
}
}
} }
}
创建 MyLayout.cs  这个是不是很眼熟 <layout type="Log4Net.MyLayout">

namespace Log4net
{
internal class MyLayout : PatternLayout
{ public MyLayout()
{
this.AddConverter("username", typeof(ParemterContent.UserNameParam));
this.AddConverter("userid", typeof(ParemterContent.UserIdParam));
}
}
}
    log4net.ILog loger = log4net.LogManager.GetLogger("iNotes");
Log4net.LogMessage msg = new LogMessage("", "dajiahao!");
loger.Info(msg);
如果插入不成功需要检查  Ptoperties下面的AssemblyInfo.cs是不是加入了
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] Global.asax是不是加入了
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 如果缺少则需要加上。 如果还不成功 则检查Log4net.config配置文件,肯定xml中自定义属性有问题

最新文章

  1. jQuery:cookie插件的使用
  2. VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
  3. Javascript之旅——第三站:几个需要注意的运算符
  4. filter 过滤缓存
  5. 关于mac环境下删除cocos2d-x环境变量配置的方法
  6. zabbix安装排错过程
  7. MongoDB 相关下载
  8. Table of Contents - Servlet &amp; JSP
  9. DataGird导出EXCEL的几个方法
  10. C#_delegate - example
  11. 初识XML及简单工厂运用--网络电视精灵
  12. sql两个表联合更新
  13. javascript 中 offsetWidth,clientWidth;offsetHeight,clientHeight的区别
  14. python学习随笔(一)
  15. js和jquery实现监听键盘事件
  16. LeetCode(41)-Rectangle Area
  17. String类中的常用方法
  18. 《Java编程思想第四版》附录 B 对比 C++和 Java
  19. 三.linux磁盘与文件系统
  20. HTML基础【1】:认识 HTML

热门文章

  1. 编程好帮手----CodeSmith Generator Studio
  2. 用PS绿化版出现“请卸载并重新安装该产品”的解决方法
  3. svn代码版本管理
  4. oracle form 触发器执行顺序及键定义[Z]
  5. some knowledge t
  6. JavaScript习题
  7. js——BOM
  8. Maximum &amp; Minimum Depth of Binary Tree
  9. QT正则表达式
  10. C语言统计运行时间