博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4net如何增加自定义字段(三种方式)
阅读量:4353 次
发布时间:2019-06-07

本文共 2179 字,大约阅读时间需要 7 分钟。

本文所提及的三种方式,不是原创,方法都来自互联网,出处不详。

谈到这个开源日志工具,应该大家都耳熟能详,从可以下载到它。

在官方提供的关于数据库插入日志的文档中,我们能看到,我们可以在Message中写入各种各样的文本,对于logger.Info(message, exception),如何才能加入自定义的内容呢?如果我们都只是把他们写入Message,将不便于日后查找。举个例子,比如我们对登录有个日志,对退出也有个日志,如何才能区分二者呢,这时候我们希望对我们的Action有个记录,可能就需要一个Action字段。样子可能是:

logger.Info(actionName, message, exception)。

log4net是开源项目,但是文档并不详细,其实网上对这个的研究已经有很多了,也可以很方便搜到,本文就把它们做一个总结放在一起。

其实对于以上类型的日志,只是Log4net项目的一个日志类型,叫做PatternLayout,就是根据配置文件中提到的Pattern进行输出,让我们瞅一眼配置文件(该配置文件来自官方文档),被指定为PatternLayout的方法,在PatternParser类中被识别,比如有个字符串为“%message%newline --- hello world %date”,PatternParser类的目的就是识别出其中的%message, %newline, %date,具体怎么做到的,请查看PatternParser类。除了%message之外,还有选项(option)的概念,%property{XXX}就是用到了这个特性,也是在PatternParser.ParseInternal中进行演算的。

其中layout部分如果是指定PatternLayout的,则是本文所要涉及的重点,比如%message。

方法1,通过log4net提供的ThreadContext,设置属性的值,详见Info1部分。

方法2,通过PatternLayout的AddConvert,增加用于处理扩展部分(系统预制了一些包括%date、%message),此处做了一个通用的XPatternCustomLayout,用来截取%property{XXX}款式的匹配转换,详见Info2部分。

方法3,通过做一个类似PatternLayout的机制来实现,缺点也是比较明显的,需要针对每一个%XXXX做预制,这样的话,如果需要临时再增加,就比较困难了。但该方法有助于理解log4net PatternLayout的机制。

具体的内容就不在这里详述了,代码这玩意儿需要跑跑才清楚。

要运行代码,本文使用了本地数据库(一个随着压缩包提供的数据库文件,sdf,用到System.Data.SqlServerCe4.0,随Microsoft Visual Studio 2010提供),可以更换成SQLServer等标准数据库来使用,注意各配置文件内的描述。

针对方法1、2、3分别提供了配置文件log4net1.xml、log4net2.xml、log4net3.xml,只需要在Web.config文件中对应的字眼修改即可。

另外本地数据库需要指定路径,共4处需要修改,Web.config、log4net1.xml、log4net2.xml、log4net3.xml。

 

代码下载:

SVN(svn checkout http://v-labs.googlecode.com/svn/trunk/log4net v-labs-read-only

转载于:https://www.cnblogs.com/volnet/archive/2011/10/16/log4net-custom-layout.html

你可能感兴趣的文章
day2-三级菜单
查看>>
UIView的常用属性
查看>>
Git push
查看>>
蓝桥杯基础练习题9(表达式)
查看>>
关于beescms如何去掉底部版权信息
查看>>
CodeForces - 13D Triangles
查看>>
面试题
查看>>
ELK简单使用
查看>>
Mysql 新建用户以及授权远程连接操作
查看>>
【Hive学习之五】Hive 参数&动态分区&分桶
查看>>
##DAY11 UITableView编辑
查看>>
为什么程序员都是夜猫子
查看>>
linux shell program summary
查看>>
流畅的python和cookbook学习笔记(二)
查看>>
【转】如何用WINDBG分析64位机上32位程序的DUMP文件
查看>>
C语言基础二维数组
查看>>
select函数
查看>>
Android中的调试
查看>>
C++ 用RGB 三种颜色绘图
查看>>
memcache和memcached的区别
查看>>