Java日志实现思想总结
前言: 在项目重构中最重要的一部分就是日志信息存储以及错误信息定位,在这里总结下我们项目组的大佬的思路。Java日志大致分为两类
1.传统日志写法
使用log4j或者logback框架对关键代码进行四种级别将日志输出到console窗口、文本文件、数据库等地方,以方便快速出现问题定位到程序出现BUG的地方。使用 方式:
controller层的日志使用Log打印信息。
service层的日志使用数据库记录操作日志。
文章图片
2.Spring的AOP
使用SpringAop的切面对方法进行监控,可以将用户方法执行前后的请求参数,执行异常,返回结果记录到系统日志。,以方便用户操作出现异常的时候找到相应的方法。对相应的架构层进行监控:
使用五大通知类型对controller层,service层进行统一监控。
文章图片
文章图片
以上两种方式的有优缺点:
第一种方式:
优点:
- 对于程序出现的BUG可以精准锁定位置。
- 代码冗余,对关键代码进行监控会出现代码重复使代码冗余。
- 难扩展,牵一发而动全身,出现问题想改需改很多处。
- 高耦合,与代码的耦合度高。
- 服务器宕机之后可能找不到输出的日志
优点:
- 低耦合,使用AOP切面思想实现,与代码进行分离 。
- 扩展高,更改一处就可以修改全部。
- 数据信息可以进行分类的入库。
- 对方法前后监控,无法精确到某个关键点,只能对方法返回进行监控。
对于一个项目来说,日志是重中之重的他的设计思路可以根据业务逻辑和运行环境去判断我们到底使用哪种方式进行,主要要做到出现问题可以快速定位问题所在以及可以做到提前预警通知,对于日志描叙尽量做到详细,以方便用户 去查看出现了什么问题。
ps: AOP可以做到的事情:
【Java日志实现思想总结】
文章图片
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 事件代理
- 日志打卡
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- Node.js中readline模块实现终端输入