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

Atitit.日志系统slf4j的使用相关推荐

  1. 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案

    一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见 ...

  2. logback+slf4j作为日志系统

    一.logback简介 log4j和logback作者是同一人:CekiGülcü.log4j和logback都是实打实的日志系统. commons-logging,slf4j这两者是日志大管家.sl ...

  3. Java日志系统04 ---- slf4j门面日志

    目录标题 前言 简介 快速开始 Maven依赖 测试代码 Slf4j整合log4j Slf4j整合logback日志 logback日志简介 Logback使用 logback配置 Log4j项目升级 ...

  4. slf4j导入那个依赖_学习SPRINGBOOT结合日志门面SLF4J和日志实现LOGBACK的混合使用

    一.此处主要介绍在springboot工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在) ...

  5. 001_日志系统的架构模型

    1. 首先八卦一下这个日志家族的成员, 下面这张图虽然没有包含全部的内容, 但是基本也涵盖了日志系统的基本内容, 不管怎么说, 先记住下面这张图: 2. 通过上面的图, 可以简单的理清关系 2.1. ...

  6. Spring Boot与日志 ——日志框架、日志配置||SLF4j使用||SpringBoot日志关系||切换日志框架

    1.日志框架 SLF4j使用 1.如何在系统中使用SLF4j 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法: 给系统里面导入slf4j的jar和 lo ...

  7. Java日志框架Slf4j+Log4j入门

    一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...

  8. java日志服务器_java服务器搭建(一)日志系统

    我是一个新入行的菜鸟,现在在做java服务器,在这里记录下服务器框架的主要构成,有任何不准确与错误的地方,希望看到的人提出意见.非常感谢! 一.概述. 1.1日志系统介绍. 任何一个应用程序或者游戏的 ...

  9. 京东「卖家日志」系统的构建 | 流式计算日志系统应用实践

    引言 本文讲述如何去构建一个日志系统,用到了哪些技术?为什么用这些技术?遇到的问题及优化的过程,希望给大家在实践中提供一些参考. 这是一个有关于日志的项目,负责收集.处理.存储.查询京东卖家相关操作的 ...

  10. java sl4j 日志_Java日志框架Slf4j+Log4j入门

    一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...

最新文章

  1. Jquery真的不难~第八回 JS的闭包问题
  2. python公共键_Python利用公共键如何对字典列表进行排序详解
  3. linux sort 命令详解
  4. 宝塔面板使用阿里云ssl证书
  5. jvm性能调优实战 - 36XX:SoftRefLRUPolicyMSPerMB配置引起的Metaspace频繁FullGC
  6. 算法分析与设计-实验二 动态规划算法设计
  7. 【Spring学习】Spring的AOP模块应用详解
  8. HDU Problem 4857 逃生【拓扑排序+优先队列】
  9. 织梦dedecms财务会计代理记账财税公司网站模板 带手机版
  10. 微博拟全球发售1100万股 发售价不超388港元
  11. java中mouselistener的用法_关于MouseListener接口的简单使用
  12. JavaWeb之得到web应用中的资源文件
  13. java语言jsp技术_JavaWeb:JSP技术基础
  14. CC00389.CloudKubernetes——|KuberNetesCI/CD.V27|——|Jenkins.v07|自动构建NodeJs应用.v01|
  15. Dots Animation
  16. 工商总局抽检电商 天猫1号店等仍存售假
  17. node.js使用WebTorrent构造流式torrent客户端
  18. vFloppy1.5-虚拟启动软盘
  19. 盘点2022年电视行业:科技与美学的战场三星缔造“生活方式”的全新价值
  20. 易用的php源码加密工具php-beast

热门文章

  1. 如何从C快速过渡到C++
  2. 《郭大侠的妹妹不可能那么可爱》 第一章 郭大侠那可爱的妹妹?
  3. 开源中国 OsChina Android 客户端源码分析(12)清理缓存
  4. C/C++中怎样获取日期和时间
  5. Percona5.6.15线程池压力测试
  6. 基于OpenCV实现二值图细化,骨骼化并求出端点和交叉点
  7. Java 后端彻底解决跨域问题(CORS)
  8. PHP人民币金额数字转中文大写的函数
  9. Prometheus Operator 架构 - 每天5分钟玩转 Docker 容器技术(178)
  10. WPF MVVM 架构 Step By Step(4)(添加bindings - 完全去掉后台代码)