JFinal是框架中最基础的部分之一,提供了JdkLog和Log4jLog两种,默认情况下使用的是Log4jLog。
日志的包是com.jfinal.log,如下图
日志使用了抽象工厂模式,如下图
Log类是一个抽象类,其中定义了日志需要用到的公共抽象方法。另外,还定义了一个defaultLogFactory静态属性(继承了ILogFactory接口),这个属性在类的static模块中进行了赋值。
static {
init();
}
static void init() {
if (defaultLogFactory == null) {
try {
Class.forName("org.apache.log4j.Logger");
Class<?> log4jLogFactoryClass = Class.forName("com.jfinal.log.Log4jLogFactory");
defaultLogFactory = (ILogFactory)log4jLogFactoryClass.newInstance(); // return new Log4jLogFactory();
} catch (Exception e) {
defaultLogFactory = new JdkLogFactory();
}
}
}
最后,LogManager的作用是用来启动日志用的,它在com.jfinal.core.Config类中用到:
private static void initLogFactory() {
LogManager.me().init();
log = Log.getLog(Config.class);
JFinalFilter.initLog();
}