浅尝微软企业库5.0日志功能

最近项目需要使用成熟的日志处理模块,我想到了微软企业库5.0,嗯,这个几年前就有了,现在6.0也出了,网上资料少,暂时不考虑

企业库的日志可以以邮件形式发送,以文本格式,XML格式保存,反正其上你能想到的功能,它都跟你考虑到了!

5.0有安装包,6.0似乎没有,只是源码,另外5.0有个EntLib Config .NET工具,用来编辑app.config,这样就可以避免直接在config文件中修改,满眼都是XML标签,找一个东西眼花缭乱的窘迫.

下面以监控一个方法的输入输出,执行时间为例,先打开EntLib Config .NET,打开你要编辑的app.config

顺序是这样先Add Policy Injection Settings然后Add Logging Setting


用rolling.log生成的就是滚动日志,日志文件可以按时间,文件大小等来自动生成多个文件,这样的好处不用我多说,如果一个文件大到上G,那还怎么看?

注意上面的Matching Rules在Member上配置了要监控的方法名称,然后注意PolicyInjection要拦截方法的方式,是在方法执行前发生动作,还是之后,还是之前发生,之后也发生,Include Calling Time表示记录方法的执行时间


下面要实现要监控的类方法,注意这个类要么继承MarshalByRefObject,要么继承ICallHandle

    public class Test : MarshalByRefObject
    {
        public string CallSomething(string msg)
        {
            Thread.Sleep(5000);
            return "打印" + msg;
        }
    }
注意这个类的实例化时必须用 PolicyInjection.Create方法来创建

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var test = PolicyInjection.Create<Test>();
            var result = test.CallSomething("Hello World");
            MessageBox.Show(result);
        }
    }
点击一个界面上的button1,日志就生成了,在程序编译好的根目录下找到rolling.log,打开看到如下内容

----------------------------------------
Timestamp: 2014/12/5 9:24:10
Message: ----结束---
Category: General
Type: ELibLog.Test
Method: CallSomething
Parameters: msg : Hello World
Return Value: 
Exception: 
Call Time: 
Priority: -1
EventId: 0
Severity: Information
Title:Call Logging
Machine: 2013-20130913KK
Application Domain: ELibLog.vshost.exe
Process Id: 9044
Process Name: F:\wangli\练习\ELibLog\ELibLog\bin\Debug\ELibLog.vshost.exe
Win32 Thread Id: 6060
Thread Name: 
----------------------------------------
----------------------------------------
Timestamp: 2014/12/5 9:24:15
Message: ----开始---
Category: General
Type: ELibLog.Test
Method: CallSomething
Parameters: msg : Hello World
Return Value: 打印Hello World
Exception: 
Call Time: 00:00:05.0106938
Priority: -1
EventId: 0
Severity: Information
Title:Call Logging
Machine: 2013-20130913KK
Application Domain: ELibLog.vshost.exe
Process Id: 9044
Process Name: F:\wangli\练习\ELibLog\ELibLog\bin\Debug\ELibLog.vshost.exe
Win32 Thread Id: 6060
Thread Name: 
----------------------------------------
上面可以看到方法的输入,输出值,和执行时间,很不错,不是吗?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值