您的位置:首页 > 编程语言 > ASP

ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)

2013-02-12 15:48 776 查看


ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)

    接上文
    IsLine.ExceptionProcess.ExceptionProcessProvider命名空间:
    系统日志和系统异常是分开记录的,ILFW将系统日志与异常分开处理,以提高系统灵活性和安全性。ExceptionProcessProvider是应用程序需要交互的主要组件,它用来产生异常消息,产生的异常消息并不直接显示,还要预先经过Layout的格式化处理后才会输出。
    概述: 
    异常模块依附于IsLine.AppLog.AppLogProvider部分,同时异常模块设计时是作为一种特殊的系统日志来对待的,所以使用Exception模块首先要配置AppLog模块,具体方法参见Aicken的相关文章。
    配置好日志模块后,需要引入命名空间:
    using IsLine.ExceptionProcess.ExceptionProcessProvider;
    并在web.config中使用“add”标签添加一个Exception的指针:
    <add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender"/>
    这个指针的作用是告诉Exception模块使用的渲染器,渲染器的名字就是value,模块加载时,会自动加载IsLine.AppLog命名空间下的“渲染器初始化”模块,经过对渲染器的初始化后,才会加载具体的Exception对象。
    这个配置过程描述如下,假使我们需要把异常信息记入Oracle数据库,后来发现异常没那么重要,只需记入文本文件就可以了,那么我们需要这样修改web.config文件。
    1.在<configSections></configSections>之间加入如下节点       





代码

<sectionGroup name="IsLine.AppLog.Configuration">

<section name="FileRender" type="IsLine.Data.Configuration.SuitConfig"/>

<section name="OracleUsingSPRender" type="IsLine.Data.Configuration.SuitConfig"/>
</sectionGroup>




     2.在</configSections><appSettings>之间加入如下节点





代码

<IsLine.AppLog.Configuration>

<FileRender>

<AppenderStyle>File</AppenderStyle>

<AppenderType>Text</AppenderType>

<AppenderInf>IsLineLog/Log4Net1.txt</AppenderInf>

<AppenderContent>->Event Date:@eventDate;->Level:@level;->Message:@exception;->Source:@source;->Stack Trace:@StackTrace->Trigger:@trigger;->Memo:@message</AppenderContent>

<LayoutInf></LayoutInf>

<Level>Debug</Level>

</FileRender>

<OracleUsingSPRender>

<AppenderStyle>Oracle</AppenderStyle>

<AppenderType>StoredProcedure</AppenderType>

<AppenderInf>IsLine.Data.Configuration.OracleConnectString</AppenderInf>

<AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent>

<LayoutInf></LayoutInf>

<Level>Debug</Level>

</OracleUsingSPRender>

</IsLine.AppLog.Configuration>




 
    3.在web.config中使用<add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender"/>指明异常使用的日志模型。“OracleUsingSPRender”是我们在第2步指明的两个日志模型其中一个的名字,现在系统中所有异常信息都会按照“OracleUsingSPRender”模型所描述的介质写入了。
    这时老板突然出现说,异常不用记Oralce了,记录文本文件就可以了,好吧,我们只需改一下异常渲染器的名字就可以,将“OracleUsingSPRender”改为“FileRender”,这样系统中的异常就会自动转向文本文件了。文本文件的路径在“AppenderInf”标签中描述,记录内容在“AppenderContent”标签中描述。
 
    系统异常记录
    该命名空间负责记录系统中的异常信息,程序人员可以直接将.Net中的“Exception”对象直接抛送给ExceptionProcessProvider,该Provider自动将Exception类型转换为刚才提到的“LogEntity”,并写入相应的介质,对应介质以及其他信息与日志节点可以相同,亦可以使用单独节点,互不影响。
    另一种标准的ExceptionProcessProvider使用方式是值得推荐的,在上文中提到,系统设计时,一般本人会预先建立业务实体模型、业务事件模型、业务消息模型,在业务实体模型中,包括业务模型和异常模型。其中异常模型的设计是在系统设计阶段完成的,它预先定义了系统运行时可能会发生的错误,并为这些错误建立模型。
    每一种自定义的异常模型须继承ExceptionEntity基类,并实现IexceptionProcess接口,这样做不但量化了系统异常,有效管理了系统中的异常,而且增强了系统安全性。在上层调用异常模块时,也无须显示使用WriteLog()方法,当Catch捕获到系统异常后,ExceptionProcessProvider会自动拦截,并将进入ILFW异常模块的处理流程。
    IsLine FrameWork 目前支持两种异常记录模式:
使用ILException类记录异常
    这种方式是最简单的方式,在对web.config进行简单的信息配置后,可以在程序中直接截获并记录异常,但缺点是需要对各种异常进行遍历。这种方式代码如下:
 





代码

            try

{

string i = "i";

Response.Write(i);

}

catch (Exception ex)

{

ILException ile = new ILException();

ile.WriteLog(ex);

}




  
   2.使用自定义异常记录异常信息
 
   自定义异常记录的方式是比较标准的OOP原则方式,你需要在系统设计阶段量化每一种异常,并且为这些异常建模,所有模型类必须继承ILException类,并且实现WriteLog()方法
    关于WriteLog()方法的实现,可以在异常类内部直接调用ILException的WriteLog(ex)实现,这是很简单的事情。
然后你就可以通过以下代码使用这个异常管理模块了:

   





代码

              try

{

string i = "i";

Response.Write(i);

}

catch (ILException ex)

{

ex.WriteLog(ex);

}




 

  由于事先对异常进行了定义,系统不必再遍历Exception树,所以这种方法拥有较高的性能,并且体现了抽象与封装的原则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐