异常在开发当中总是存在的,开发人员和测试人员不可能24小时,呆在电脑旁边处理异常。而将这些异常要点记录下来形成日志,则是很有必要的,这将有助于我们快速定位解决问题,提高效率,减少人力成本。
新建.net core api项目
新建API控制器StudentController,更改route规则,新建动作方法ExceptionTest,里面写入一个错误。新建基础设施层类库Util。
![v2-90fb97bc1efcf899f3ce16d7d2e8dc2a_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/78d7cf19a6faae09ba270774a645d4a8.jpeg)
引入log4net日志框架,并完成相关配置
在Util层安装log4net包
![v2-34ae07b66b5050930520d5205cb190f4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f4eb9aa54b283bbe902d1d69b932a65a.jpeg)
在API层下新建log4net.config配置文件,以配置日志相关设置,并且完成配置文件的内容。(内容无需自己手写,只需配置会用即可,下方内容中有详细注释,开发当中根据实际需要进行配置)
![v2-f531d2aa5f4b8a73b9c3e2520825ee02_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f0032afdb9f4db27303a9838720b3d7d.jpeg)
新建日志Util类,新建日志初始化,封装日志的记录操作
![v2-acd07926b4768300cfdcd02968d5c535_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/3d1fece844a2bb4e9010f96bd750fb13.jpeg)
在startup构造函数当中,初始化日志仓库的LogInit(记得添加引用)
![v2-265cf51efdc10b28c0a880947b891c7d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/80a51ac9b3d9f97ea6d3bea423c69500.jpeg)
完成异常过滤器类
自定义异常过滤器类:GlobalExceptionFilter,继承自IExceptionFilter,并实现接口:OnException
![v2-f2c7211a75f729f938c0638f068061b9_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/dccc52a89600d2ed3731e3566f70210d.jpeg)
在控制器中注入异常过滤器
![v2-a1ed7426d16a3c007b987942a51f1d8b_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/9419b25e74b2044a386fad67e57481cf.jpeg)
试着运行一下:发现日志果然有了。
![v2-e9ba86186fbccedbc0295e47d60d3fd1_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f0d690089d73c6000bfe6bb93dc55f4e.jpeg)
接下来使用免费的第三方微信公众号提醒:Server酱
地址:http://sc.ftqq.com/3.version 方法很简单,上面有教程。
接着在过滤器那里调用接口,每当有错误信息时,给我们发送一条提示信息
![v2-7a3f03cc8e96d439acedd527cc4f4503_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/419cee0e49edd980318ce4e6bb86fdc4.jpeg)
测试一下,发现果然可以:
![v2-9e6bdc9ee0f2996e12d50e721e98c258_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/e2ec6c42560d3b6f476575b60c5f97b9.jpeg)
![v2-acdb82843ad5567622f091b7623ebda7_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/9d3216bf1a91ca388b5872bdeaab4f93.jpeg)
好了今天的实例到这里就结束了,多学习,多写,多思考,多交流,共同进步!关于邮箱通知的,下次补上,你们也可以自己试试,示例代码下载地址:https://github.com/huguangcheng/_NET-Core_Study/tree/master/ExceptionLog