Jfinal 切换自定义Slf4j日志系统

在项目中统一使用Sl4j日志系统,方便配合全局使用logback配置日志打印。特别是在SQL使用日志的形式输出的是,使用统一的格式方便在日志文件中查看运行的SQL。

第一步:先继承 Log  类,实现日志输出方法

public class Sl4jLog extends Log {
    private Logger log;

    Sl4jLog(Class<?> clazz) {
        log = LoggerFactory.getLogger(clazz.getName());
    }

    Sl4jLog(String name) {
        log = LoggerFactory.getLogger(name);
    }

    public static Sl4jLog getLog(Class<?> clazz) {
        return new Sl4jLog(clazz);
    }

    public static Sl4jLog getLog(String name) {
        return new Sl4jLog(name);
    }

    @Override
    public void debug(String message) {
        log.debug(message);
    }

    @Override
    public void debug(String message, Throwable t) {
        log.debug(message, t);
    }

    @Override
    public void info(String message) {
        log.info(message);
    }

    @Override
    public void info(String message, Throwable t) {
        log.info(message, t);
    }

    @Override
    public void warn(String message) {
        log.warn(message);
    }

    @Override
    public void warn(String message, Throwable t) {
        log.warn(message, t);
    }

    @Override
    public void error(String message) {
        log.error(message);
    }

    @Override
    public void error(String message, Throwable t) {
        log.error(message, t);
    }

    @Override
    public void fatal(String message) {
        log.fatal(message, t);

    }

    @Override
    public void fatal(String message, Throwable t) {
       log.error(message, t);

    }

    @Override
    public boolean isDebugEnabled() {
        return log.isDebugEnabled();
    }

    @Override
    public boolean isInfoEnabled() {
        return log.isInfoEnabled();
    }

    @Override
    public boolean isWarnEnabled() {
        return log.isWarnEnabled();
    }

    @Override
    public boolean isErrorEnabled() {
        return log.isWarnEnabled();
    }

    @Override
    public boolean isFatalEnabled() {
        return false;
    }

}

第二步 实现ILogFactory 接口。

public class Sl4jLogFactory implements ILogFactory {


    @Override
    public Log getLog(Class<?> clazz) {
        return Sl4jLog.getLog(clazz);
    }

    @Override
    public Log getLog(String name) {
        return Sl4jLog.getLog(name);
    }
}

 第三步  在配置类中 配置自定义的日志系统Sl4jLogFactory 

// 设置日志系统
constants.setLogFactory(new Sl4jLogFactory());


这样一个自定的的sl4j 日志系统就配置完毕。结合 logback 就能够同一配置日志打印的格式,输出等。此方法也可以用于其它日志系统的实现。



评论区

JFinal

2019-07-12 10:33

jfinal 之前版本的改进还未轮到 log 部分, 相信下次版本升级该轮到 log、upload 等模块了。

感谢你的分享

ethan_shy

2019-07-12 11:31

@JFinal 期待这两块的升级