log4net:保存自定义参数到数据库
- log4net:保存日志到数据库
- 自定义参数
- 新建一个类,继承于PatternLayoutConverter
public class CustomerPatternConverter : PatternLayoutConverter
{
protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
{
if (Option != null)
{
// Write the value for the specified key
WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
}
else
{
// Write all the key value pairs
WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
}
} /// <summary>
/// 通过反射获取传入的日志对象的某个属性的值
/// </summary>
/// <param name="property"></param>
/// <returns></returns>
private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent)
{
object propertyValue = string.Empty; PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
if (propertyInfo != null)
propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null); return propertyValue;
}
} - 创建自定义Layout
public class MyLayout:log4net.Layout.PatternLayout
{
public MyLayout()
{
this.AddConverter("Customer",typeof(CustomerPatternConverter));
}
} - 创建一个类,用来保存需要保存到数据库中的数据
public class LogContent
{ public string CustomerCol { get; set; } public string Test { get; set; }
} - 修改数据库的表结构
alter table dbo.[log] add customerCol nvarchar(max)
alter table dbo.[log] add Test nvarchar(max) - 修改配置文档,在文档中添加如下parameter
<parameter>
<parameterName value="@customerCol"/>
<dbtype value="String"/>
<size value=""/>
<Layout type="Tospur.Test.Log4net.MyLayout">
<param name="ConversionPattern" value="%Customer{CustomerCol}"></param>
</Layout>
</parameter>
<parameter>
<parameterName value="@Test"/>
<dbtype value="String"/>
<size value=""/>
<Layout type="Tospur.Test.Log4net.MyLayout">
<param name="ConversionPattern" value="%Customer{Test}"></param>
</Layout>
</parameter> - 修改配置文件中的sql语
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[customerCol],[Test])
VALUES (@log_date, @thread, @log_level, @logger, @message,@customerCol,@Test)" /> - 运行代码
static void Main(string[] args)
{
log4net.ILog log = log4net.LogManager.GetLogger("logdb");
log.Info(new LogContent { CustomerCol="", Test="TEst" });
Console.ReadKey();
}
- 新建一个类,继承于PatternLayoutConverter
- 运行程序,查看结果

http://www.cnblogs.com/MQNH/articles/5603326.html
log4net:保存自定义参数到数据库的更多相关文章
- log4net保存到数据库系列三、代码中xml配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- Log4net 自定义字段到数据库
今天要求做个log4net自定义字段到数据库,在网上找了好多例子,都运行不成功.最后找了个国外的,很简单的就解决了. log4net它已经定义的字段有 <commandText value=&q ...
- log4net保存到数据库系列五、新增数据库字段
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- log4net保存到数据库系列四、完整代码配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- log4net保存到数据库系列二:独立配置文件中配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- log4net保存到数据库系列一:WebConfig中配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志 一.WebConfig中配置log4net 二.独立配置文件中配置log4net ...
- log4net 写数据到sql数据库
最近需要把用户的一些行为添加到数据库中,所以想到了用log4net ,如果有别的好的方案,大家可以给我指正. 先看一下配置文件 我这个是控制台文件 app.config <layout type ...
- Apache DolphinScheduler 使用文档(7/8):系统参数及自定义参数
本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 7. 参数 7.1 系统参数 7.2 时间自定义参数 ...
- loadrunner怎么将变量保存到参数中
用这个lr_save_string 函数 char *b = "很简单";lr_save_string(b,"b"); lr_output_message(&q ...
随机推荐
- springmvcIntercept(拦截器)
1.创建拦截器 public class MyIntercept implements HandlerInterceptor { @Override public void afterCompleti ...
- nginx全局变量实例对照 rewrite参考手册
http://dwz.stamhe.com/index.php?_a=index&_m=show&count=10 remote_addr 客户端ip,如:192.168.4.2 bi ...
- 如何获取有性能问题的SQL
1.通过用户反馈获取存在性能问题的SQL. 2.通过慢查日志获取存在性能的SQL. 启动慢查日志 slow_query_log=on set global slow_query_log=o ...
- Struts2+Hibernate+Spring 整合示例[转]
原文 http://blog.csdn.net/tkd03072010/article/details/7468769 Spring整合Struts2.Hibernate原理概述: 从用户角度来看,用 ...
- .htaccess保护目录与文件
一般来说很多虚拟主机预设是没有开启保护网站主机目录下的文件,其实很危险的,假若你的目录下忘记放置index文件,那很可能您目录就被看光,一个不小心很可能重要资料就被拿走,这是蛮严重的一件事情.如果是L ...
- sql 创建数据库
CREATE DATABASE [NET_CN] ON PRIMARY( NAME=N'NET_CN',FILENAME= N'D:\Data\NET_CN.mdf',SIZE = 5120KB,MA ...
- javascript 继承实现
JavaScript高级程序设计读书笔记 这本书继承的实现列举了好几种,里面有两种是比较靠谱的. 1 组合继承 //父构造函数 function Super(name) { this.name = n ...
- 在Eclipse上建立hbase 0.98.3/0.96.2源代码阅读环境
2.1. 切换到源代码目录,执行: mvn 黄色部分作用为设置代理.由于本人的编译环境在公司内网,所以需要设置代理 2.2. 生成eclipse项目环境: mvn eclipse:eclipse -D ...
- android中图片的三级缓存cache策略(内存/文件/网络)
实现图片缓存也不难,需要有相应的cache策略.这里我采用 内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且 ...
- 游戏贴图中常用术语《DC》的理解
什么是DC呢? 在GDI中,DC(Device Context)是一个非常重要的概念. 有的书中,将DC翻译为设备描述表,也有的书中翻译为设备上下文. 但是这些翻译,无法在我们的头脑里有强烈的冲击,无 ...