zoukankan      html  css  js  c++  java
  • Atitit.日志系统slf4j的使用

    Atitit.日志系统slf4j的使用

     

     

    SLF4J: Class path contains multiple SLF4J bindings.

    SLF4J: Found binding in [jar:file:/C:/0workspace/AtiPlatf_cms/lib_slf1.7.5/slf4j-nop-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

    SLF4J: Found binding in [jar:file:/C:/0workspace/AtiPlatf_cms/lib_slf1.7.5/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

    SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory]

     

     

     

    slf4j自动绑定实现类的方式基于约定:它要求你在实现类的包名和拿到LoggerFactory实例的文件路径必须是:org/slf4j/impl/StaticLoggerBinder.class

     

    有了这个约定就好办了,slf4j在自己的基本类LoggerFactory里,直接调用实现类StaticLoggerBinder拿到LoggerFactory的实例

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

    汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

     

    slf4j的使用与绑定原理

    前面介绍了slf4j的优势,本节介绍怎么使用slf4j以及其中的原理,前文说到了,单独的slf4j是不能工作的,必须带上其他具体的日志实现方案。就以apache的log4j作为具体日志实现方案为例,如果在工程中要使用slf4j作为接口,并且要用log4j作为具体实现方案,那么我们需要做的事情如下:(下面的xxx表示具体版本号)

    · slf4j-api-xxx.jar加入工程classpath中;

    · slf4j-log4jxx-xxx.jar加入工程classpath中;

    · log4j-xxx.jar加入工程classpath中;

    · log4j.properties(log4j.xml)文件加入工程classpath中。

    介绍一下工作原理:

    首先,slf4j-api作为slf4j的接口类,使用在程序代码中,这个包提供了一个Logger类和LoggerFactory类,Logger类用来打日志,LoggerFactory类用来获取Logger;slf4j-log4j是连接slf4j和log4j的桥梁,怎么连接的呢?我们看看slf4j的LoggerFactory类的getLogger函数的源码:

    追踪到最后,发现LoggerFactory.getLogger()首先获取一个ILoggerFactory接口,然后使用该接口获取具体的Logger。获取ILoggerFactory的时候用到了一个StaticLoggerBinder类,仔细研究我们会发现StaticLoggerBinder这个类并不是slf4j-api这个包中的类,而是slf4j-log4j包中的类,这个类就是一个中间类,它用来将抽象的slf4j变成具体的log4j,也就是说具体要使用什么样的日志实现方案,就得靠这个StaticLoggerBinder类。再看看slf4j-log4j包种的这个StaticLoggerBinder类创建ILoggerFactory长什么样子:

     

    可以看到slf4j-log4j中的StaticLoggerBinder类创建的ILoggerFactory其实是一个 org.slf4j.impl.Log4jLoggerFactory ,这个类的getLogger函数是这样的

     

    就在其中创建了真正的 org.apache.log4j.Logger ,也就是我们需要的具体的日志实现方案的Logger类。就这样,整个绑定过程就完成

     

     

    slf4j自动绑定实现类原理 - wangjuntytl的专栏 - 博客频道 - CSDN.NET.html

     

    Atiend

     

  • 相关阅读:
    网络配置bridge
    ng-zorro等组件默认样式的修改
    正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?
    ||与&&的返回值
    JS判断对象是否存在的10种方法总结
    undefined与null的区别
    前端页面布局中水平、垂直居中问题
    MAMP VirtualHost 无效 配置踩坑
    问题锦选
    Windows相关要点记录
  • 原文地址:https://www.cnblogs.com/attilax/p/15198463.html
Copyright © 2011-2022 走看看