以HTML为表现的日志记录组件
日志搬家:http://www.loogn.net/blog/Article.aspx?id=21
关于日志记录,如果你不想随用随写,又不想用log4net的话,也许你可以了解一下这个!
我也是个很懒的人,程序上的东西,只要别人写好了,而且自己用着爽,绝不做重复的coding。这个组件的起源是因为感觉log4net太强大太复杂(对我来说真是这样),当我想用log4net的时候,看到配置我都吓尿n次了,而这个时候心中又突发奇想,用HTML来做日志的表现!理由有二,一是HTML和CSS大家都会,二是可以实现很好的可读可视性。
一、配置文件说明
<?xml version="1.0" encoding="utf-8" ?>
<LoggerConfig>
<style>
.fatal{
background-color:red
}
.error{
background-color:purple;
}
.warn{
background-color:yellow;
}
.info{
background-color:green;
}
.debug{
background-color:gray;
}
.myinfo{
font-size:24px;
}
</style>
<tpls>
<tpl name="fatal">
<![CDATA[
<p>
<span class="fatal">{type}</span>:{message}<br/>
{date}
</p>
]]>
</tpl>
<tpl name="error" >
<![CDATA[
<p>
<span class="error">{type}</span>:{message}<br/>
{date}
</p>
]]>
</tpl>
<tpl name="warn">
<![CDATA[
<p>
<span class="warn">{type}</span>:{message}<br/>
{date}
</p>
]]>
</tpl>
<tpl name="info">
<![CDATA[
<p>
<span class="info">{type}</span>:{message}<br/>
{date}
</p>
]]>
</tpl>
<tpl name="debug">
<![CDATA[
<p>
<span class="debug">{type}</span>:{message}<br/>
{date}
</p>
]]>
</tpl>
</tpls>
<logs>
<log name="default" path="D:\abc" types="all" dateFmt="yyyy-MM-dd HH:mm:ss">
<tpl name="info">
<![CDATA[
<p>
<span class="info myinfo">{type}</span>:{message}<br/>
{date}
</p>
]]>
</tpl>
</log>
<log name="log2" path="D:\abc\a.html" types="fatal,error,warn,info,debug">
</log>
</logs>
</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配置文件的路径,如:
<appSettings>
<add key="loggerConfig" value="LoggerConfig.xml"/>
</appSettings>
1、得到Logger对象
//得到默认logger,即name="default"的那个
var logger = Logger.GetInstance();
//得到name="log2"的对象
var log2 = Logger.GetInstance("log2");
2、简单记录日志
logger.Debug("debugdebugdebug");
logger.Info("infoinfoinfoinfoinfoinfo");
3、过虑记录日志,由于日志的内容很可能是动态的,所以组件提供的所有记录日志的方法都可传入一个委托来过虑掉那些自己不关心的内容
//这个不会记录,开始为数字的被过滤掉了
logger.Error("2323ErrorErrorErrorError", (s) =>Regex.IsMatch(s,@"^\d+"));
//这个会记录,日志的内容在于10,不会被过滤
logger.Fatal();
4、HTML展示,开始一直都说用HTML表示,效果是什么样呢?(此处的不美,不表示不支持优美的布局,程序员的界面,你们懂的!)

以此献给那些喜欢简单编程的程序员们!下载
以HTML为表现的日志记录组件的更多相关文章
- log4net--不可多得的开源日志记录组件
log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...
- 【干货】.NET开发通用组件发布(四) 日志记录组件
组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...
- Elmah 日志记录组件
http://www.cnblogs.com/jys509/p/4571298.html 简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理 ...
- 日志记录组件[Log4net]详细介绍
转载:http://www.cnblogs.com/liwei6797/archive/2007/04/27/729679.html 因为工作中有要用到Log记录,找到一篇不错的文章,就转了过来. 一 ...
- C#Log4net日志记录组件的使用
一.Log4Net介绍 Log4net是基于.NET开发的一款非常著名的记录日志开源组件.它通过一套XML配置的日志引擎,将日志分不同的等级,分别是:FATAL . ERROR. WARN. INFO ...
- MVC使用 Elmah 日志记录组件
在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. ...
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- log4net日志记录
这里是接着上一篇来优化的,上篇:ASP.NET MVC中错误日志信息记录 log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件,数据库,EventLog等),日志就是程序的黑 ...
- Log4Net异常日志记录在asp.net mvc3.0的应用(转载)
这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...
随机推荐
- Windows7 系统 CMD命令行,点阵字体不能改变大小以及中文乱码的问题
之前装了oracle 11g后,发现开机速度竟然奇葩的达到了3分钟.经过旁边大神指点,说是因为oracle某个(具体不清楚)服务,在断网的时候会不断的ping网络,导致速度变慢.然后就关服务呗,然后一 ...
- spring之依赖注入
- Java api 入门教程 之 JAVA的文件操作
I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...
- linux添加开机自启动脚本示例详解
linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...
- PCI在linux系统中注册与注销示例
1. pci_driver结构struct pci_driver { struct list_head node; const char *name; const struct pc ...
- myeclipse优化
myeclipse优化 http://blog.163.com/cayyenne@126/blog/static/12186261420100611546658/
- position&containing block
一.包含块(Containing Block) 要讲position,首先就涉及到一个概念:包含块. 1.包含块介绍 包含块简单理解就是一个定位参考块,就是"大盒子里套小盒子"中那 ...
- POJ 3608 Bridge Across Islands --凸包间距离,旋转卡壳
题意: 给你两个凸包,求其最短距离. 解法: POJ 我真的是弄不懂了,也不说一声点就是按顺时针给出的,不用调整点顺序. 还是说数据水了,没出乱给点或给逆时针点的数据呢..我直接默认顺时针给的点居然A ...
- Qt 静态编译后的exe太大, 可以这样压缩.
1. 下载PECompact 下载地址:http://download.csdn.net/download/sniper_bing/7669247 , 不行大家就去baidu搜索下载就可以了这个是绿 ...
- stunnel+CCProxy,搭建加密代理
总所周知,不可抗拒的特别有用心的原因,我们无法访问youtube,picasa,Twitter……国外优秀网站,很多人采用了代理服务器的方法访问. 如果您有一台放在海外的服务器,这个就好办了.下载一个 ...