一 . 前言
这一篇讨论一点简单得东西 , 主要来了解一下什么叫日志门户 , 他又是怎么集成的 .
二 . 日志门户
阿里出版的 Java开发手册里面有这样一个强制规约 :
应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架 (SLF4J、JCL–Jakarta Commons Logging)中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Test.class);
那么为什么要这么用 ?
什么叫日志门户 ?
Simple Logging Facade for Java(SLF4J)作为各种日志框架(例如Java.util.Logging、logback、log4j)的简单门面或抽象,允许最终用户在部署时插入所需的日志框架。
简单点说 , 门户的目的是为了解耦 , SLF4J 就像一个抽象类一样 , 不关注具体的实现 . 在使用的时候 , 也可以灵活的使用 .
三 . 集成方式
类关系图
可以看到 , 核心前置处理就是初始化阶段 , 用来将对应的插件加载进入 , 分析起来还是以 Spring 为例 :
3.1 初始化阶段
// S1 : 初始化的发起
// Log 的加载同样是在 LogFactory 环节进行的
C- SpringApplication
private static final Log logger = LogFactory.getLog(SpringApplication.class);
// S2 : LogFactory 发起处理流程 , 加载 Adapter 适配器
getLog -> LogAdapter.createLog(name);
// S3 : LogAdapter 中加载具体的处理类
public static Log createLog(String name) {
switch(logApi) {