关键词:
问题:由于项目需要,今天弄了很久,SLF4J和Logback
一、SLF4J和Logback和Commons Logging和Log4j的区别以及在普通的java项目中使用:
SLF4J和Commons Logging类似,充当日志API,Logback和Log4j类似,充当其实现类,
为什么有了Commons Logging和Log4j,又会蹦出来SLF4J和Logback?这是因为Java有着非常悠久的开源历史,不但OpenJDK本身是开源的,而且我们用到的第三方库,几乎全部都是开源的。开源生态丰富的一个特定就是,同一个功能,可以找到若干种互相竞争的开源库。
因为对Commons Logging的接口不满意,有人就搞了SLF4J。因为对Log4j的性能不满意,有人就搞了Logback。
区别:
在Commons Logging中,我们要打印日志,有时候得这么写:
int score = 99;
p.setScore(score);
log.info("Set score " + score + " for Person " + p.getName() + " ok.");
在Commons Logging中,我们要打印日志,有时候得这么写:
int score = 99;
p.setScore(score);
logger.info("Set score for Person ok.", score, p.getName());
我们靠猜也能猜出来,SLF4J的日志接口传入的是一个带占位符的字符串,用后面的变量自动替换占位符,所以看起来更加自然。
如何在普通的java项目中使用SLF4J?它的接口实际上和Commons Logging几乎一模一样:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class Main
final Logger logger = LoggerFactory.getLogger(getClass());
对比一下Commons Logging和SLF4J的接口:
Commons Logging | SLF4J |
---|---|
org.apache.commons.logging.Log | org.slf4j.Logger |
org.apache.commons.logging.LogFactory | org.slf4j.LoggerFactory |
使用SLF4J和Logback和前面讲到的使用Commons Logging加Log4j是类似的,先分别下载SLF4J和Logback,然后把以下jar包放到classpath下:
- slf4j-api-1.7.x.jar
- logback-classic-1.2.x.jar
- logback-core-1.2.x.jar
然后使用SLF4J的Logger和LoggerFactory即可。和Log4j类似,我们仍然需要一个Logback的配置文件,把logback.xml
放到classpath下
二、在spring项目中使用SLF4J和Logback
第一步:导入jar包:
-
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/jul-to-slf4j -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.5</version>
</dependency>
第二步:编写配置文件
-
Logback尝试在类路径中找到一个名为logback-test.xml 的文件 。
-
如果找不到此类文件,则logback尝试在classpath中找到一个名为logback.groovy 的文件 。
-
如果找不到这样的文件,它将在类路径 ..中检查文件 logback.xml 。
- 配置文件编写:
<?xml version="1.0" encoding="UTF-8"?> <!--配置自定义过滤器--> <filter class="com.yxkj.ehc.filter.LogBackFilter"></filter> |
自定义过滤器类:
public FilterReply decide(ILoggingEvent event) |
上面的配置文件可以使日志输出至D:/AreaLog/ehcard_lh
第三步:在类中加入@Slf4j注解;然后用 log.error("")、log.info("")输出对应级别的日志文件
最后:参考:
官网:http://logback.qos.ch/manual/configuration.html
其他博客:https://www.liaoxuefeng.com/wiki/1252599548343744/1264739155914176
slf4j+logback实现日志输出和记录(代码片段)
一、SLF4J SLF4J,即简单日志门面(SimpleLoggingFacadeforJava),不是具体的日志解决方案,它只服务于各种各样的日志系统。在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。 使用... 查看详情
日志框架--logback(代码片段)
logback背景介绍:SLF4J(SimpleLoggingFacadeforJava)是一个日志API接口,SLF4J提供TRACE,DEBUG,INFO,WARN,ERROR五种级别,而log4j和logback就是对SLF4J的具体实现。logback的性能优于log4j。logback-core:其它两个模块的基础模块logback-classic:它是log4j的一... 查看详情
捕获异常之使用slf4j和logback(代码片段)
...,搭配使用非常便于开发。有的童鞋可能还听说过SLF4J和Logback。这两个东东看上去也像日志,它们又是啥?其实SLF4J类似于CommonsLogging,也是一个日志接口,而Logback类似于Log4j,是一个日志的实现。为什么有了CommonsLogging和Log4j,... 查看详情
springboot2.x整合slf4j+logback日志框架(代码片段)
目录1、Slf4j及Logback简介2、日志级别3、maven依赖3.1springboot2maven配置文件3.2普通maven项目的配置文件4、logback、springboot配置说明4.1 logback.xml 和logback-spring.xml的区别4.2logback.xml配置文件的加载机制4.3SpringBoot结合logback配置说明4.3.1logb... 查看详情
springbootlogback日志组件使用(代码片段)
一logback简介 Logback是一个开源日志组件。Logback一般和SLF4结合起来使用。外层使用SLF4J,里面的实现是logback。什么意思,简单来说我们使用层看到的是SLF4J。我们使用的时候就是和SLF4J提供的一些api打交道。 我们可能... 查看详情
springboot的日志配置(logback+slf4j)简介(代码片段)
slf4j简介和技术选型市面上的日志框架:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....日志门面(日志的抽象层)日志实现JCL(JakartaCommonsLogging)SLF4j(SimpleLoggingFacadeforJava)jboss-loggingLog4jJUL(java.util.logging)Log4j2Logbac 查看详情
slfj4+logback(代码片段)
...再代码中或配置文件中指定使用的那个具体的日志系统。logback:是由log4j创始人设计的一个开源日志组件。logback当前分成三个模块:logback-core,logback-classic和logback-access。l 查看详情
logback介绍和配置详解(代码片段)
logback是java的日志开源组件,是log4j创始人写的,性能比log4j要好,目前主要分为3个模块logback-core:核心代码模块logback-classic:log4j的一个改良版本,同时实现了slf4j的接口,这样你如果之后要切换其他日志组件也是一件很容易的事lo... 查看详情
logback源码分析(代码片段)
...ortorg.slf4j.LoggerFactory;//省略...Loggerlogger=LoggerFactory.getLogger(LogbackTest.class);logger.info("isbestplayerinworld","Greizmann");本文以Logback日志框架来分析以上代码的实现。slf4j如今日志框架常用的有log4j、log4j2、jul(common-log)以及logba... 查看详情
logback的使用和logback.xml详解(代码片段)
一、logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站:http://logback.qos.ch。它当前分为下面下个模块:logback-core:其它两个模块的基础模块logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4jAPI使你... 查看详情
从源码来理解slf4j的绑定,以及logback对配置文件的加载(代码片段)
...om/youzhibing/p/6849843.html 编译期间,完成slf4j的绑定已经logback配置文件的加载。slf4j会在classpath中寻找org/slf4j/impl/StaticLoggerBinder.class(会在具体的日志框架如log4j、logback等中存在),找到并完成绑定;同时,logback也会在classpath中寻... 查看详情
用slf4j/logback打印日志-2(代码片段)
本篇主要介绍logback的输出源配置,logback默认提供了很多输出源,但是用的最多的是这几种:OutputStreamAppender日志输出到一个二进制流,可以通过<encoder/>配置编码ConsoleAppender日志输出到控制台,可以通过<encoder/>配置编码... 查看详情
logback的使用和原理(代码片段)
logback的使用和原理1依赖关系在pom文件中引入springbootstarter依赖,自动引入了这三个依赖,而这三个依赖,就是logback日志框架进行日志操作的。<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>s... 查看详情
springboot2.x整合slf4j+logback日志框架(代码片段)
目录1、Slf4j及Logback简介2、日志级别3、maven依赖3.1springboot2maven配置文件3.2普通maven项目的配置文件4、logback、springboot配置说明4.1 logback.xml 和logback-spring.xml的区别4.2logback.xml配置文件的加载机制4.3SpringBoot结合logback配置说明4.3.1logb... 查看详情
springboot使用日志(代码片段)
...日志门面日志实现JCL、SLF4J、jboss-loggingLog4j、JUL、Log4j2、Logback日志门面:SLF4J日志实现:LogbackSpringBoot:底层是Spring框架,Spring框架默认是用JCL;SpringBoot选用SLF4J和Logback.2、SLF4J使用以后开发的时候,日志记录。日志记录方法的调... 查看详情
java#在项目中使用slf4j+logback来记录日志(代码片段)
...ACE有关系统流程的更多详细信息SLF4J和Log4j的关系:1.2Logback概述Logback分为三个不同的模块,logback-core(核心代码模块),logback-classic(log4j的一个改良版本,同时实现了slf4j的接口,这样如果之后要... 查看详情
为啥 Slf4j/Logback 不记录文件名和行号
】为啥Slf4j/Logback不记录文件名和行号【英文标题】:Whydoesn\'tSlf4j/Logbacklogfilenameandrownumber为什么Slf4j/Logback不记录文件名和行号【发布时间】:2015-04-2014:20:23【问题描述】:我的日志记录有问题,slf4j没有记录消息/堆栈跟踪的文... 查看详情
解决slf4j:actualbindingisoftype[ch.qos.logback.classic.util.contextselectorstaticbinder]的方案!!!!!(代码片段)
...smultipleSLF4Jbindings.SLF4J:Foundbindingin[jar:file:/D:/maven-repo/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J:Foundbindingin[jar:file:/D:/maven-repo/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLogge... 查看详情