zoukankan      html  css  js  c++  java
  • 日志初探

    本文初探引用链接为:https://www.cnblogs.com/duguxiaobiao/p/9128819.html#

    一、现在企业中常用的日志组件有哪些:JCL 、 JUL、  SLF4j、Log4j、  Log4j2 、 Logback、 jboss-loggin 等,一般日志是配套出现的,一般是由  一个日志门面 和 一个日志实现 配套使用。

    日志门面  日志实现
    JCL       log4j
    SLF4j     log4j2
    jboss-loggin   logback
    JUL
    且在springboot 中 ,也是使用的  slf4j + logback
     
    那么,下面开始 一个个排除
     
    JUL:实现简陋,很多地方受到开发者的吐槽,所以 首先排除
     
    jboss-loggin:自诞生之初,就不是为了服务大众,不受到什么青睐,所以 也排除
     
    log4j:log4j虽然声名显赫,但是在这里 首先要知道一点  slf4j 、log4j、logback 这三个框架都是同一个作者ceki 开发的,作者说 log4j 太烂,不想修改了,因此开发了 升级版的 log4j,也就是 logback ,因此在这里 我们划掉 log4j
     
    log4j2:log4j2不是log4j的升级版,而是apache开发的,log4j2 该框架很优秀,正是因为太优秀,设计时与 部分框架对其支持的程度有限,不一定会什么时候踩坑,而log4j2在设计时的性能是优于logback的,但是 99%的开发者不会有机会体会到这种差距,因为  logback也很优秀,足够我们日常开发,所以我们划掉 log4j2
     
    JCL:划掉JCL 主要是因为 日志实现上我们选择了 logback,而 logback和slf4j 毕竟是同一个作者写的,亲生的,合得来,而且在springboot 中 ,也是使用的  slf4j + logback,所以我们划掉了 JCL
     
    因此,最后剩下的就是我们 这篇博客的 内容了 ,如何配置和使用  SLF4j + logback
     
     
    二、
    Commons Logging和Log4j这一对好基友,它们一个负责充当日志API,一个负责实现日志底层,搭配使用非常便于开发。
    其实SLF4J类似于Commons Logging,也是一个日志接口,而Logback类似于Log4j,是一个日志的实现。

    因为对Commons Logging的接口不满意,有人就搞了SLF4J。因为对Log4j的性能不满意,有人就搞了Logback。

    我们先来看看SLF4J对Commons Logging的接口有何改进。在Commons Logging中,我们要打印日志,有时候得这么写:

    int score = 99;
    p.setScore(score);
    log.info("Set score " + score + " for Person " + p.getName() + " ok.");
    

    拼字符串是一个非常麻烦的事情,所以SLF4J的日志接口改进成这样了:

    int score = 99;
    p.setScore(score);
    logger.info("Set score {} for Person {} ok.", score, p.getName());
    引用链接 https://www.liaoxuefeng.com/wiki/1252599548343744/1264739155914176

    、引用链接https://blog.csdn.net/chszs/article/details/8653460

    SLF4J

    SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。

    Logback

    Logback是Log4j的改进版本,而且原生支持SLF4J(因为是同一作者开发的),因此从其它日志框架如Log4j或JDK的logging迁移到Logback是完全可行的。

    由于Logback原生支持SLF4J,因此Logback+SLF4J的组合是日志框架的最佳选择,比SLF4J+其它日志框架的组合要快一些。而且Logback的配置可以是XML或Groovy代码。

    注意一个重要的特性,Logback通过JMX修改日志配置(比如日志级别从Debug调整到INFO),可以从JMX控制台直接操作,无需重启应用程序。

    SLF4J API用法

    1. 从org.slf4j包导入Logger和LoggerFactory

    1.  
      import org.slf4j.Logger;
    2.  
      import org.slf4j.LoggerFactory;
    
    

    2. 声明日志类

    private final Logger logger = LoggerFactory.getLogger(LoggingSample.class);
    
    

    3. 使用debug、warn、info、error方法并跟踪适合的参数。

    所有的方法默认都使用字符串作为输入。

    logger.info("This is sample info statement");
    
    

    SLF4J结合Logback

    在pom.xml包含下面的依赖:它会自动包含所有的依赖包logback-core、slf4j-api……
    1.  
      <dependency>
    2.  
      <groupId>ch.qos.logback</groupId>
    3.  
      <artifactId>logback-classic</artifactId>
    4.  
      <version>1.0.7</version>
    5.  
      </dependency>

    SLF4J能用于现有的日志框架如Log4j、Commons-logging、java.util.logging(JUL)。

    SLF4J结合Log4j

    在pom.xml包含下面的依赖
    1.  
      <dependency>
    2.  
      <groupId>org.slf4j</groupId>
    3.  
      <artifactId>slf4j-log4j12</artifactId>
    4.  
      <version>1.7.2</version>
    5.  
      </dependency>
    
    

    SLF4J结合JUL (java.util.logging)

    在pom.xml包含下面的依赖

      1.  
        <dependency>
      2.  
        <groupId>org.slf4j</groupId>
      3.  
        <artifactId>slf4j-jdk14</artifactId>
      4.  
        <version>1.7.2</version>
      5.  
        </dependency>
         
     
  • 相关阅读:
    Linux系统中如何查找大文件或目录文件夹的方法
    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换
    使用纯css代码实现div的“回”字型“叠放”效果
    中国剩余定理求解“六位教授必须首次都停止上课”问题
    Java基础篇Socket网络编程中的应用实例
    计算正互反矩阵的特征值及特征向量
    维吉尼亚密码java代码实现根据密钥长度计算IC值过程
    维吉尼亚密码java完整版
    容器常用操作注意事项
    HashMap源码分析
  • 原文地址:https://www.cnblogs.com/jianzhixuan/p/13614550.html
Copyright © 2011-2022 走看看