1介绍
客户需求:记录用户在什么时候什么地方登录系统,做了什么事情。
(例:张三在总公司下创建广州分公司)
开发人员编码实现:
创建公司方法 |
public Organization createCompany(CompanyDto dto){ // 执行业务方法 companyDAO.save(dto); // 记录日志 LogDAO.save(new BusinessLog(userDAO.getSubjectName() + ",创建:" + dto.getCompanyName())); }
|
这样写看起来没什么问题,但其中有一个最大的问题:业务逻辑和日志代码混在一起。
如果业务逻辑和日志代码足够复杂的时候,你可以想象得到你的代码就如同意大利面条,以后维护的时候就会变成人间地狱。
每个方法必须职责单一,不应该把日志代码混入业务逻辑中。
Koala业务日志系统就是为解决此问题而设计:业务逻辑和日志代码分离!
目标:
1. 日志记录对业务方法尽量无侵入
2.尽最大可能不影响业务方法性能(异步实现)
3.日志模板配置简单(基于groovy)
4.日志持久化方式灵活(面向接口设计,可扩展文件、NoSQL存储)
5. 开发调试效率高(支持热部署)
6.直观快速查看(提供Web查询页面)
事实上,要达到真正的无侵入是目前版本没有实现的,Koala业务日志系统对业务方法的侵入是要在业务方法上加一个注解。
缺陷:
1.依赖Spring 的AOP
2. 只有受Spring IOC容器托管的bean才能记录