Jfinal默认使用log4j打印日志,log4j最近更新是12年,已经比较老了。而log4j的升级版log4j2使用了java最新特性,性能更好。那怎么让Jfinal使用log4j2打印日志呢?
1、首先我们来看下Jfinal怎么设置日志框架
入口在JFinalConfig这个类中。下面我们查看源码大致了解一下Jfinal日志框架设置
从这里看出如果我们需要自定义日志框架,我们需要实现ILogFactory接口。Jfinal默认有log4j和jdk的日志实现。从下面源码我们可以看出jfinal默认使用log4j日志框架
2、接下来我们看下jfinal中ILogFactory中log4j的实现Log4jLogFactory
ILogFactory主要有两个接口,通过Class和名字返回一个Log的实现
Log4JLogFactory也很简单,直接实例化了一个Log4jLog,接下来我们看下Log4jLog的具体实现
从代码可以看出,Log4jLog实例化了一个Log4j,然后将需要打印的内容委托给了log4j
3、照葫芦画瓢,使用log4j2只需要两步。
第一步实现Log接口。
第二步实现ILogFactory
最后别忘了在JfinalConfig中设置
附录:
Log4j2的相关依赖
<properties>
<log4j2.version>2.11.0</log4j2.version>
<slf4j.version>1.7.25</slf4j.version>
</properties>
<!--slf4j及log4j2日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!--桥接器:告诉slf4j使用Log4j2-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--具体实现,log4j2-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>