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>-&gt;Event Date:@eventDate;-&gt;Level:@level;-&gt;Message:@exception;-&gt;Source:@source;-&gt;Stack Trace:@StackTrace-&gt;Trigger:@trigger;-&gt;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 目前支持两种异常记录模式:

  1. 使用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树,所以这种方法拥有较高的性能,并且体现了抽象与封装的原则。

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

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

    ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下) 接上文       异常展示 系统异常模块除了记录功能,还有一个很 ...

  2. ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下)

    ASP.NET企业开发框架IsLine FrameWork系列之十五--框架配置信息大全(下) 接上文   三.IsLine.ExceptionProcess 部分 这部分主要管理异常,对异常的管理分 ...

  3. ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中)

    ASP.NET企业开发框架IsLine FrameWork系列之十四--框架配置信息大全(中) 接上文 上文中讲到配置日志模块的第二步,这篇文章继续给大家介绍日志配置方法. Step 3.在</ ...

  4. ASP.NET企业开发框架IsLine FrameWork系列之十三--框架配置信息大全(上)

    ASP.NET企业开发框架IsLine FrameWork系列之十三--框架配置信息大全(上) IsLine FrameWork一个是支持企业应用系统开发的框架,开发人员可以在其基础上对企业所需的应用 ...

  5. ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持

    ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session.Cookie与安全支持 今天来介绍IsLine.HttpContent.HttpContentProvide ...

  6. ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存

    ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存 今天我们来介绍 IsLine.HttpContent.HttpContentP ...

  7. ASP.NET企业开发框架IsLine FrameWork系列之八--AppLogProvider日志框架(下)

    ASP.NET企业开发框架IsLine FrameWork系列之八--AppLogProvider日志框架(下) 接上文 上面的配置实例是按照将日志写入文本文件来配置的(节点具体含义见上文),程序调用 ...

  8. ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上)

    ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上) 日志与异常 部署系统以后,管理员需要有一套强大的日志系统来诊断和修复配置上的问题,这就 ...

  9. ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)

    ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下) 接上文 对文件系统的操作: 对于文件目前内置3中支持对象:XML.TEXT.CONFIG ...

最新文章

  1. 2022-2028年中国果壳活性炭行业市场发展调研及竞争战略分析报告
  2. PyODPS 学习 实现查询数据 并更新数据
  3. ElasticSearch Groovy脚本远程代码执行漏洞
  4. sql server 清空数据库表数据
  5. AWS — AWS 上的 MEC
  6. 网站推广期间要学会筛选关键词,有利于提升网站推广转化率
  7. Keras之MLP:利用MLP【Input(8)→(12)(relu)→O(sigmoid+二元交叉)】模型实现预测新数据(利用糖尿病数据集的八个特征实现二分类预测
  8. Vue.js 笔记之 img src
  9. 漫画算法:找出缺失的整数
  10. python自动控制库_Python最为神奇的库,可控制你的鼠标键盘自动运行!
  11. c++思维导图_40+张最全Linux/C/C++思维导图,你确定不收藏?
  12. 10 QM配置-检验计划配置-维护检验批来源并分配检验类型
  13. 广电总局拟规定设立未成年人频道
  14. c++ tcp 服务器和客户端例子
  15. java定时运行一个url_Swift 4:如何异步使用URLSessionDataTask但请求是否在一个定时队列中?...
  16. Spring框架帮助文档目录
  17. Tomcat8安装与配置
  18. 架设iis网页服务器,如何用IIS架设web服务器
  19. 2022.11.24
  20. 电力电子与电力传动类毕业论文文献包含哪些?

热门文章

  1. 《循序渐进学Spark》一1.7 本章小结
  2. Very Deep Convolutional Networks for Large-scale Image Recognition(vggnet)
  3. LeetCode OJ:Pascal's Triangle(帕斯卡三角)
  4. window.open完美替代window.showModalDialog
  5. hdu 1625(floyd判环)
  6. vs的form标签引起css走样问题
  7. MiniO纠删码快速入门
  8. CentOS上快速安装Oracle服务器脚本
  9. Mac系统下SVN命令
  10. 【温故而知新】HTTP 报文