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
Atitit.日志系统slf4j的使用相关推荐
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见 ...
- logback+slf4j作为日志系统
一.logback简介 log4j和logback作者是同一人:CekiGülcü.log4j和logback都是实打实的日志系统. commons-logging,slf4j这两者是日志大管家.sl ...
- Java日志系统04 ---- slf4j门面日志
目录标题 前言 简介 快速开始 Maven依赖 测试代码 Slf4j整合log4j Slf4j整合logback日志 logback日志简介 Logback使用 logback配置 Log4j项目升级 ...
- slf4j导入那个依赖_学习SPRINGBOOT结合日志门面SLF4J和日志实现LOGBACK的混合使用
一.此处主要介绍在springboot工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在) ...
- 001_日志系统的架构模型
1. 首先八卦一下这个日志家族的成员, 下面这张图虽然没有包含全部的内容, 但是基本也涵盖了日志系统的基本内容, 不管怎么说, 先记住下面这张图: 2. 通过上面的图, 可以简单的理清关系 2.1. ...
- Spring Boot与日志 ——日志框架、日志配置||SLF4j使用||SpringBoot日志关系||切换日志框架
1.日志框架 SLF4j使用 1.如何在系统中使用SLF4j 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法: 给系统里面导入slf4j的jar和 lo ...
- Java日志框架Slf4j+Log4j入门
一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...
- java日志服务器_java服务器搭建(一)日志系统
我是一个新入行的菜鸟,现在在做java服务器,在这里记录下服务器框架的主要构成,有任何不准确与错误的地方,希望看到的人提出意见.非常感谢! 一.概述. 1.1日志系统介绍. 任何一个应用程序或者游戏的 ...
- 京东「卖家日志」系统的构建 | 流式计算日志系统应用实践
引言 本文讲述如何去构建一个日志系统,用到了哪些技术?为什么用这些技术?遇到的问题及优化的过程,希望给大家在实践中提供一些参考. 这是一个有关于日志的项目,负责收集.处理.存储.查询京东卖家相关操作的 ...
- java sl4j 日志_Java日志框架Slf4j+Log4j入门
一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...
最新文章
- Jquery真的不难~第八回 JS的闭包问题
- python公共键_Python利用公共键如何对字典列表进行排序详解
- linux sort 命令详解
- 宝塔面板使用阿里云ssl证书
- jvm性能调优实战 - 36XX:SoftRefLRUPolicyMSPerMB配置引起的Metaspace频繁FullGC
- 算法分析与设计-实验二 动态规划算法设计
- 【Spring学习】Spring的AOP模块应用详解
- HDU Problem 4857 逃生【拓扑排序+优先队列】
- 织梦dedecms财务会计代理记账财税公司网站模板 带手机版
- 微博拟全球发售1100万股 发售价不超388港元
- java中mouselistener的用法_关于MouseListener接口的简单使用
- JavaWeb之得到web应用中的资源文件
- java语言jsp技术_JavaWeb:JSP技术基础
- CC00389.CloudKubernetes——|KuberNetesCI/CD.V27|——|Jenkins.v07|自动构建NodeJs应用.v01|
- Dots Animation
- 工商总局抽检电商 天猫1号店等仍存售假
- node.js使用WebTorrent构造流式torrent客户端
- vFloppy1.5-虚拟启动软盘
- 盘点2022年电视行业:科技与美学的战场三星缔造“生活方式”的全新价值
- 易用的php源码加密工具php-beast
热门文章
- 如何从C快速过渡到C++
- 《郭大侠的妹妹不可能那么可爱》 第一章 郭大侠那可爱的妹妹?
- 开源中国 OsChina Android 客户端源码分析(12)清理缓存
- C/C++中怎样获取日期和时间
- Percona5.6.15线程池压力测试
- 基于OpenCV实现二值图细化,骨骼化并求出端点和交叉点
- Java 后端彻底解决跨域问题(CORS)
- PHP人民币金额数字转中文大写的函数
- Prometheus Operator 架构 - 每天5分钟玩转 Docker 容器技术(178)
- WPF MVVM 架构 Step By Step(4)(添加bindings - 完全去掉后台代码)