日志搬家:http://www.loogn.net/blog/Article.aspx?id=21

关于日志记录,如果你不想随用随写,又不想用log4net的话,也许你可以了解一下这个!

我也是个很懒的人,程序上的东西,只要别人写好了,而且自己用着爽,绝不做重复的coding。这个组件的起源是因为感觉log4net太强大太复杂(对我来说真是这样),当我想用log4net的时候,看到配置我都吓尿n次了,而这个时候心中又突发奇想,用HTML来做日志的表现!理由有二,一是HTML和CSS大家都会,二是可以实现很好的可读可视性。

一、配置文件说明

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <LoggerConfig>
  3. <style>
  4. .fatal{
  5. background-color:red
  6. }
  7. .error{
  8. background-color:purple;
  9. }
  10. .warn{
  11. background-color:yellow;
  12. }
  13. .info{
  14. background-color:green;
  15. }
  16. .debug{
  17. background-color:gray;
  18. }
  19.  
  20. .myinfo{
  21. font-size:24px;
  22. }
  23. </style>
  24.  
  25. <tpls>
  26. <tpl name="fatal">
  27. <![CDATA[
  28. <p>
  29. <span class="fatal">{type}</span>:{message}<br/>
  30. {date}
  31. </p>
  32. ]]>
  33. </tpl>
  34. <tpl name="error" >
  35. <![CDATA[
  36. <p>
  37. <span class="error">{type}</span>:{message}<br/>
  38. {date}
  39. </p>
  40. ]]>
  41. </tpl>
  42. <tpl name="warn">
  43. <![CDATA[
  44. <p>
  45. <span class="warn">{type}</span>:{message}<br/>
  46. {date}
  47. </p>
  48. ]]>
  49. </tpl>
  50. <tpl name="info">
  51. <![CDATA[
  52. <p>
  53. <span class="info">{type}</span>:{message}<br/>
  54. {date}
  55. </p>
  56. ]]>
  57. </tpl>
  58. <tpl name="debug">
  59. <![CDATA[
  60. <p>
  61. <span class="debug">{type}</span>:{message}<br/>
  62. {date}
  63. </p>
  64. ]]>
  65. </tpl>
  66. </tpls>
  67.  
  68. <logs>
  69. <log name="default" path="D:\abc" types="all" dateFmt="yyyy-MM-dd HH:mm:ss">
  70. <tpl name="info">
  71. <![CDATA[
  72. <p>
  73. <span class="info myinfo">{type}</span>:{message}<br/>
  74. {date}
  75. </p>
  76. ]]>
  77. </tpl>
  78. </log>
  79.  
  80. <log name="log2" path="D:\abc\a.html" types="fatal,error,warn,info,debug">
  81. </log>
  82. </logs>
  83. </LoggerConfig>

LoggerConfig.xml

虽然上面的配置也不短,洒洒洋洋80大行,但它真的只有3个(或者说2个半)很简单的结点组成。

1、style结点,这个不说了,和html页面里style结点是一个样的,用于定义下面模板tpl里的样式。

2、tpls结点,这里定义的是日志类型的默认模板,模板内容大家都懂,就是HTML标签,其中有三个占位符{type}、{message}、{date},日志类型和{type}是指一类东西,分别是fatal,error,warn,info,debug五个类型,这一点是参考log4net,那里它叫日志级别。

3、logs结点,里面每个子结点即log结点都定义一个logger对象的属性和行为。

先看log结点的属性:

1)name为唯一表识,用来得到唯一logger对象(内部有缓存机制,随用随调,无须担心),name="default"表示默认logger

2)path为目录或具体文件,为目录时日志文件会根据日期生成, 如上“D:\abc” 会随着日期生成多个这个命名的文件(D:\abc\yyyy\MM\dd.html),当为具体文件时,应该是.html或.htm的文件,日志便会一直追加这一个文件。

3)types就是上面说过的5个类型,为空表示什么都不记录,多个type时用英文逗号隔开,如只记录致命错误和警告,就是types="fatal,warn",如果要全部记录,可用types="all"来简单表示types="fatal,error,warn,info,debug"。

4)dateFmt这个是模板里{date}的格式,默认是"yyyy-MM-dd HH:mm:ss",记录日志时将做为DateTime.ToString()的参数调用。

log结点的子结点:

和上面tpls的子结点一样,都是定义模板用的,上面是默认的,这里自然是特殊、可选的了,大家应该能想到这里的定义会覆盖默认的,而其实上也的确如此~_~!因为是重复的内容,所以上面才说配置文件一共就2个半结点组成。

二、调用API

把组件dll引入项目后,要在App.config和web.config里设置Logger配置文件的路径,如:

  1. <appSettings>
  2. <add key="loggerConfig" value="LoggerConfig.xml"/>
  3. </appSettings>

1、得到Logger对象

  1. //得到默认logger,即name="default"的那个
  2. var logger = Logger.GetInstance();
  3. //得到name="log2"的对象
  4. var log2 = Logger.GetInstance("log2");

2、简单记录日志

  1. logger.Debug("debugdebugdebug");
  2. logger.Info("infoinfoinfoinfoinfoinfo");

3、过虑记录日志,由于日志的内容很可能是动态的,所以组件提供的所有记录日志的方法都可传入一个委托来过虑掉那些自己不关心的内容

  1. //这个不会记录,开始为数字的被过滤掉了
  2. logger.Error("2323ErrorErrorErrorError", (s) =>Regex.IsMatch(s,@"^\d+"));
  3. //这个会记录,日志的内容在于10,不会被过滤
  4. logger.Fatal();

4、HTML展示,开始一直都说用HTML表示,效果是什么样呢?(此处的不美,不表示不支持优美的布局,程序员的界面,你们懂的!)

    以此献给那些喜欢简单编程的程序员们!下载

以HTML为表现的日志记录组件的更多相关文章

  1. log4net--不可多得的开源日志记录组件

    log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...

  2. 【干货】.NET开发通用组件发布(四) 日志记录组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...

  3. Elmah 日志记录组件

    http://www.cnblogs.com/jys509/p/4571298.html 简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理 ...

  4. 日志记录组件[Log4net]详细介绍

    转载:http://www.cnblogs.com/liwei6797/archive/2007/04/27/729679.html 因为工作中有要用到Log记录,找到一篇不错的文章,就转了过来. 一 ...

  5. C#Log4net日志记录组件的使用

    一.Log4Net介绍 Log4net是基于.NET开发的一款非常著名的记录日志开源组件.它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL . ERROR. WARN. INFO ...

  6. MVC使用 Elmah 日志记录组件

    在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. ...

  7. Log4Net异常日志记录在asp.net mvc3.0的应用

    前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...

  8. log4net日志记录

    这里是接着上一篇来优化的,上篇:ASP.NET MVC中错误日志信息记录 log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件,数据库,EventLog等),日志就是程序的黑 ...

  9. Log4Net异常日志记录在asp.net mvc3.0的应用(转载)

    这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...

随机推荐

  1. hash查找

    这里使用了编号代替真实的数据,只用来表示算法 #ifndef HASH_DATA_T #define HASH_DATA_T int #endif //HASH_DATA_T typedef stru ...

  2. who

    查看当前系统中当前登录的帐户 $who jiang :0 2016-10-13 08:55 (:0) jiang pts/4 2016-10-13 09:03 (:0) jiang pts/1 201 ...

  3. 无穷滚动(Infinite scroll)的实现原理

    1 无穷滚动(无限加载)与分页的比较 现在越来越多的网站或者博客的列表页开始抛弃传统的分页技术,大致的原因在于,分页明显地增加了用户的操作行为以及页面加载等待的时间,而网页浏览者往往没什么耐心. 而无 ...

  4. AIR ANE(本机扩展)使用中的一些问题(Android平台)

    关于如何写ANE,就不说了,用关键字,Android ANE 开发,会搜索到N多. 下面写一下碰到的问题,和一些别人可能没有说清的地方 1. 生成的ANE是直接拷到lib里使用吗?A:这个一定不要直接 ...

  5. linux进程间通信-管道

    一 管道的局限性 管道有两个局限性:(1)他是半双工(即数据只能在一个方向上流动).(2)它只能在具有公共祖先的进程之间使用.一个管道由一个进程创建,然后该 进程调用fork,此后父子进程之间就可该管 ...

  6. 150929-拖延高于懒-HTML(End)

    四天未更了,分别是因为Xshell和虚拟机链接不好,累,懒(好像是三天..) 就像我一直嗷嗷着要去学开出一样,5年都没有去......拖延症似乎比懒癌更可怕.慢慢的慢慢的,人长大了,小时候的一些东西才 ...

  7. sql中视图的作用

    视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态 ...

  8. HMAC算法AS3版

    http://www.cnblogs.com/appleseed/archive/2008/09/17/1292232.html

  9. java 25 - 4 网络编程之 UDP协议传输的代码优化

    UDP协议的输出端: /* UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) */ public c ...

  10. Zygote浅谈

    Zygote是什么 操作系统中,进程实际上是文件到地址空间的映射像.进程将要运行时,由操作系统将其映射到地址空间,完成这项工作的事物本质也应是一个进程,我们称这个进程为孵化进程,那么这个进程怎么收到消 ...