从零开始编写自己的C#框架(20)——框架异常处理及日志记录

简介:

最近很忙,杂事也多,所以开发本框架也是断断续续的,终于在前两天将前面设定的功能都基本完成了,剩下一些小功能遗漏的以后发现再补上。接下来的章节主要都是讲解在本框架的基础上进行开发的小巧。

 

  本框架主要有四种日志记录,分别是登陆日志、操作日志、手动收集异常日志和自动收集异常日志四种,大部分日志采集都不用开发者动手实现,在模板与相关的功能类中已自动帮我们将所需要的日志记录下来了。

 

  登陆日志,记录的当然是用户登陆、退出、在线时长的日志,主要是在登陆(Login.aspx)、后端首页(Main.aspx,有一个退出按钮)和在线列表(OnlineUsersList.aspx,有踢除用户下线按钮)等几个页面使用,所使用到的逻辑层函数放在LoginLogBll.cs(用户登陆日志自定义逻辑类)与OnlineUsersBll.cs(OnlineUsersBll逻辑类)两个文件中。登陆页面主要是记录用户登陆系统的日志信息,而其他页面则是记录用户退出系统的日志信息,同时记录在线时长。当然后端首页有个定时器,会每分钟更新用户最后在线时间,以便用户退出系统时(或直接关闭浏览器后),相关的程序能及时记录用户退出信息及在线时长。

 

  操作日志,记录的是用户在后端管理系统中,什么时间打开了那个页面,然后进行的是添加、修改、删除记录、更新状态、删除图片、踢除用户下线......等各种操作信息。方便出现问题时,管理人员能快捷的查出操作人员追究对应责任;也方便领导查看后端相关人员有没有使用系统,分析系统推广效果(很多OA或企业管理系统在企业购买回来后,不少员工都很抵触不去使用系统,造成花了很多钱购买来的系统成为摆设,当然这个操作记录并不能对这种情况的改善有很大的帮助,但至少让相关人员知道员工对系统的使用情况,哈哈...)

  对于操作日志的记录,开发人员基本上不用去编写代码,因为在生成的模板函数中已全面的记录各种操作日志,除非自定义的函数中并没有去调用模板生成的添加、修改、删除等函数,直接使用SubSonic3.0插件接口或ADO.NET接口,那样的话就得自己编写代码记录了。而对于用户进入过那些页面的记录,由于后端系统开发的页面都必须继承PageBase类,每个后端页面打开时,都会运行该类的初始化函数,该初始化函数中会调用CommonBll.UserRecord(this)函数,忠诚的记录下用户的操作轨迹。

  具体实现代码大家可以查看逻辑层生成的模板函数类,里面所有添加、修改、删除、更新函数,都会调用UseLogBll.GetInstence().Save()这个函数,记录用户进行了什么样的操作。而自定义函数想要记录用户操作说明,也可以直接调用这个函数,写上自定义操作说明。

 

  手动收集异常日志,对于异常,有的朋友建议都将它抛出来,这样的话容易发现Bug,然后进行修复,但都是这样处理的话,用户体验就会比较差,所以我一般是数据层将异常抛出来,在逻辑层或UI层将它们都捕捉起来,然后在catch块中调用CommonBll.WriteLog("异常说明", e)把异常记录到文件中,当系统交付给使用方时,使用人员进行某些操作时,万一出现异常也只是显示失败或操作不了,而不会抛出黄页,需要维护时,只要使用方将软件或网站根目录下的Data文件夹打包发给开发人员即可分析查看异常问题所在。

  当然对于那些需要非常详细的日志记录的程序,也可以将每一步执行的结果调用日志函数记录下来,方便开发人员分析问题。

  对于手动收集异常的调用代码,大家可以查看逻辑层(Solution.Logic.Managers)的SubSonic文件夹下面的模板类和UI层代码。

 

  自动收集异常日志,顾名思义就是自动记录所有我们没有捕捉到的异常。虽然我们上面已做了异常捕捉处理,但难免有些地方会忘记捕捉,那么我们就在全局异常处理那里将它记录下来。我们在Global.asax文件的Application_Error()函数中进行异常采集,收集服务器端页面发生的所有异常,调用自定义函数ErrorLogBll.GetInstence().Save()将它们记录到数据库中。

 

  通过以上四种日志记录,基本上将我们需要的信息都记录了下来,协助我们排查安全问题、排查各种错误。

 

解决方案下载:(本解决方案忘了将之前注释掉的权限打开了...下次处理后再重新发出来吧)

由于框架不是非常成熟,很多朋友不是用来学习而是直接用到项目中,但不熟悉框架引起不少小问题,所以停止提供下载,有需要学习的可以到群共享里下,不便之处敬请谅解。

 

说明:试过有朋友将所有章节中的解决方案都使用前面测试例子中的数据库,所以一直显示不了列表,所以查看过后才知道数据库没有记录引起的......所以在这里说明一下,在开发过程中,根据需要我会对数据表或字段进行增改操作,为了避免写太多的更新SQL语句,所以每个章节所配的数据库只是对应本章节,大家使用新的解决方案时就重新附加新的数据库。大家打开数据字典就会查看到,几乎对数据字典的每个修改我都有记录下来,方便大家比对。





    本文转自 AllEmpty 博客园博客,原文链接:http://www.cnblogs.com/EmptyFS/p/3808231.html,如需转载请自行联系原作者



相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4149 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
1394 3
|
8月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
672 11
|
测试技术 C# 数据库
C# 单元测试框架 NUnit 一分钟浅谈
【10月更文挑战第17天】单元测试是软件开发中重要的质量保证手段,NUnit 是一个广泛使用的 .NET 单元测试框架。本文从基础到进阶介绍了 NUnit 的使用方法,包括安装、基本用法、参数化测试、异步测试等,并探讨了常见问题和易错点,旨在帮助开发者有效利用单元测试提高代码质量和开发效率。
753 64
|
开发框架 运维 监控
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
505 5
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
353 12
|
开发框架 C# iOS开发
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
530 3
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
378 3
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
763 1
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
330 1