Jfinal默认使用log4j打印日志,log4j最近更新是12年,已经比较老了。而log4j的升级版log4j2使用了java最新特性,性能更好。那怎么让Jfinal使用log4j2打印日志呢?

1、首先我们来看下Jfinal怎么设置日志框架

Jfinal使用log4j2打印日志

入口在JFinalConfig这个类中。下面我们查看源码大致了解一下Jfinal日志框架设置

Jfinal使用log4j2打印日志

从这里看出如果我们需要自定义日志框架,我们需要实现ILogFactory接口。Jfinal默认有log4j和jdk的日志实现。从下面源码我们可以看出jfinal默认使用log4j日志框架

Jfinal使用log4j2打印日志

Jfinal使用log4j2打印日志

2、接下来我们看下jfinal中ILogFactory中log4j的实现Log4jLogFactory

Jfinal使用log4j2打印日志

ILogFactory主要有两个接口,通过Class和名字返回一个Log的实现

Jfinal使用log4j2打印日志

Log4JLogFactory也很简单,直接实例化了一个Log4jLog,接下来我们看下Log4jLog的具体实现

Jfinal使用log4j2打印日志

从代码可以看出,Log4jLog实例化了一个Log4j,然后将需要打印的内容委托给了log4j

3、照葫芦画瓢,使用log4j2只需要两步。

第一步实现Log接口。

Jfinal使用log4j2打印日志

第二步实现ILogFactory

Jfinal使用log4j2打印日志

最后别忘了在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>

相关文章:

  • 2022-12-23
  • 2021-05-31
  • 2022-12-23
  • 2021-11-10
  • 2021-06-13
  • 2022-02-03
  • 2022-01-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2021-07-14
  • 2021-09-01
相关资源
相似解决方案