Java中的日志分类及应用

java中常用的日志分类有以下几种

1. JUL  (java.util.Logging) Java自带的日志,可以直接使用

package site.uuyy.log;

import java.util.logging.Logger;

public class JUL {

    public static void main(String[] args) {
        Logger log = Logger.getLogger("jul");
        log.info("123");
    }
}

2. log4j 

maven 项目导入,无其他依赖

<dependency>

   <groupId>log4j</groupId>

   <artifactId>log4j</artifactId>

   <version>1.2.12</version>

</dependency>
package site.uuyy.log;


import org.apache.log4j.Logger;

public class Log4j {
    public static void main(String[] args) {
        Logger logger=Logger.getLogger(Log4j.class);
        logger.info("log4j1");
    }
}

需要添加配置文件log4j.properties 放置在classpath下面:

log4j.rootLogger=debug,stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n

3. JCL :Jakarta commons-logging ,是apache公司开发的一个抽象日志通用框架,本身不实现日志记录,但是提供了记录日志的抽象方法即接口(info,debug,error.......),底层通过一个数组存放具体的日志框架的类名,从而判断使用哪种前两种那种方式来实现,已停止更新

jcl 不直接记录日志,通过第三方记录日志

      如果使用jcl来记录日志,在没有log4j的依赖情况下,是用jul

      如果有了log4j则使用log4j

添加依赖:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

编写测试类:

package site.uuyy.log;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class JCL {
    public static void main(String[] args) {
        Log log=LogFactory.getFactory().getInstance(JCL.class);
        log.info("jcl");
    }
}

4.  slf4j: Simple Log Faceded for Java  也不记录日志, 通过绑定器绑定一个具体的日志记录来完成日志记录

添加依赖:

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.25</version> 
</dependency>
 <!-- 下面的为绑定器-->
 <!--<dependency>-->
     <!--<groupId>org.slf4j</groupId>-->
     <!--<artifactId>slf4j-jdk14</artifactId>-->
     <!--<version>1.7.25</version>--><!--版本要和slf4j的版本一致-->
 <!--</dependency>-->
 <!--<dependency>-->
     <!--<groupId>org.slf4j</groupId>-->
     <!--<artifactId>slf4j-log4j12</artifactId>-->
     <!--<version>1.7.25</version>--><!--版本要和slf4j的版本一致-->
 <!--</dependency>-->
 <dependency>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-classic</artifactId>
     <version>1.2.3</version>
 </dependency>

编写测试类:

package site.uuyy.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SLF4j {
    public static void main(String[] args) {
        Logger logger=LoggerFactory.getLogger(SLF4j.class);
        logger.info("slf4j");
    }
}

在slf4j中还有桥接器的概念,具体参考 http://www.slf4j.org/legacy.html,以下注释为个人理解

<!--这个叫桥接器,社么意思呢,就是我本身类是log4j来实现日志的,现在我要交给slf4j去实现,
而假设slf4j现在绑定的是logback实现方式,所以最终日志会以logback方式打印而不是以log4j来实现,其他桥接器同理-->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version>1.7.25</version>
</dependency>

5. 其他 logback,simple-log,log4j2 等等

6. 图像描述

7. Spring中的日志

 

spring5使用的spring的jcl(spring改了jcl的代码)来记录日志的,但是jcl不能直接记录日志,采用循环优先的原则

spring4当中依赖的是原生的jcl 即 common-logging.jar

spring 的jcl 默认使用的为jul

 

8. Mybatis的日志

mybatis 默认使用slf4j,如果没有则也会采用循环有限的原则,与spring正整合时,如果没有使用slf4j,默认会使用jcl来打印日志

有图为证

9.  项目结构 及github地址

github地址:https://github.com/wanghaizhang/blogproject/tree/master/java_log

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值