好的日志记录系统,可以记录下来系统的任何运行和操作信息。
但日志记录引入系统后,又会与业务系统互相牵扯,造成代码的可读和易读性变差。
同时日志系统需要在后期能实现高灵活的可配置性,这样当更改日志的存储方式时,不需要去变更业务层的代码。
日志系统还需要与主业务完全隔离,即不会因为日志记录影响主业务的进行,同时不会影响主业务的线程栈,这就要求日志系统能独立于业务线程栈于其他线程栈上。
采用AOP机制可以在方法进行拦截注入,此种机制不牵扯业务代码的维护,但是这种机制对底层的整合要求太高,底层需要相当高的质量代码,否则会出现牵一发而动全身的情况。
为了达到复杂性与灵活性的统一,可以引入另一种机制IOC,通过依赖反转,在日志处理层增加一个依赖配置节,而调用日志输入端的业务层,去注册对应的配置节基础信息,通过日志配置节与业务层配置节,进行配对映射,达到在后期自动进行日志的映射处理,为了避免后期需要重复配置,在调用注入前期可以关联到默认的配置节上。
此种处理,减轻了逻辑的耦合,同时在实现层面也不会有太复杂的编程模型,我们只需要在日志的管道处理出口处,根据配对信息,进行独立的存储,这样日志可以灵活的配置到文件、数据库或远端服务。