美文网首页mybatis-generatorJava技术升华
MyBatis Generator代码分析二(日志)

MyBatis Generator代码分析二(日志)

作者: 叩丁狼教育 | 来源:发表于2015-09-06 11:00 被阅读922次

    【原创文章,转载请注明原文章地址,谢谢!】

    org.mybatis.generator.internal.util.messages.Message类:####

    用于获得消息做国际化,使用的bundle是org.mybatis.generator.internal.util.messages.messages;
    小技巧,在输出大量信息的时候(比如help消息)

    • 先创建一个key:Usage.Lines=27,得到一共多少行消息,
    • 然后用for循环遍历每一行消息输出:Usage.0~Usage.27

    org.mybatis.generator.logging:####

    放的是MGB日志相关内容;在MBG中,日志支持两种,一种是Log4J,一种是JDK的logging,而这个包里面的类就是对日志的一个门面。我的理解,在MBG出来的时候,还没有slf4j,所以没有用slf4j,感觉这个包其实比较没太大意义;

    • AbstractLogFactory:一个日志工厂的接口,提供了一个getLog(Class)方法对传入的Class返回一个Log;

    • Log:对日志器的接口(具体Logger的门面);提供了通用的日志器方法:

      • isDebugEnabled:是否debug级别;
      • error:记录错误
      • debug:记录debug信息;
      • warn:记录错误信息;
    • Log4jImpl:对Log4J的一个适配;简单对比一个方法:
      public JdkLoggingImpl(Class<?> clazz) {
      log = Logger.getLogger(clazz.getName());
      }

        public boolean isDebugEnabled() {
            return log.isLoggable(Level.FINE);
        }
      
        public void error(String s, Throwable e) {
            LogRecord lr = new LogRecord(Level.SEVERE, s);
            lr.setSourceClassName(log.getName());
            lr.setThrown(e);
            log.log(lr);
        }    
      
    • JdkLoggingImpl:对JDK的logging的适配;简单的看一个方法就明白:

        public Log4jImpl(Class<?> clazz) {
            log = Logger.getLogger(clazz);
        }
      
        public boolean isDebugEnabled() {
            return log.isDebugEnabled();
        }
      
        public void error(String s, Throwable e) {
            log.error(s, e);
        }
      
    • LogFactory:对Log工厂的一个包装;在LogFactory中持有一个AbstractLogFactory引用;
      在LogFactory中持有两个实现了AbstractLogFactory的静态内部类:

      • JdkLoggingLogFactory:对JDKlogging的包装类,其创建的Logger其实就是JdkLoggingImpl;
      • Log4jLoggingLogFactory:对Log4J的包装类,其创建的Logger其实就是Log4jImpl;

    在MBG中,都是使用LogFactory的LogFactory.getLog(Class targetLogClass)直接获取对一个Class的日志对象;
    这个日志工厂在MBG中是固定的,不容易直接扩展;

    相关文章

      网友评论

      本文标题:MyBatis Generator代码分析二(日志)

      本文链接:https://www.haomeiwen.com/subject/zwcrcttx.html