首页 > 其他分享 >使用SLF4J和Logback23

使用SLF4J和Logback23

时间:2023-03-27 15:04:43浏览次数:48  
标签:Logging Commons SLF4J score 使用 Logback23 Logback Log4j

其实SLF4J类似于Commons Logging,也是一个日志接口,而Logback类似于Log4j,是一个日志的实现。

为什么有了Commons Logging和Log4j,又会蹦出来SLF4J和Logback?这是因为Java有着非常悠久的开源历史,不但OpenJDK本身是开源的,而且我们用到的第三方库,几乎全部都是开源的。开源生态丰富的一个特定就是,同一个功能,可以找到若干种互相竞争的开源库。

因为对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());

我们靠猜也能猜出来,SLF4J的日志接口传入的是一个带占位符的字符串,用后面的变量自动替换占位符,所以看起来更加自然。

如何使用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

不同之处就是Log变成了Logger,LogFactory变成了LoggerFactory。

使用SLF4J和Logback和前面讲到的使用Commons Logging加Log4j是类似的,先分别下载SLF4JLogback,然后把以下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下,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>

	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
			<charset>utf-8</charset>
		</encoder>
		<file>log/output.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>log/output.log.%i</fileNamePattern>
		</rollingPolicy>
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>1MB</MaxFileSize>
		</triggeringPolicy>
	</appender>

	<root level="INFO">
		<appender-ref ref="CONSOLE" />
		<appender-ref ref="FILE" />
	</root>
</configuration>

运行即可获得类似如下的输出:

13:15:25.328 [main] INFO  com.itranswarp.learnjava.Main - Start process...

从目前的趋势来看,越来越多的开源项目从Commons Logging加Log4j转向了SLF4J加Logback。

标签:Logging,Commons,SLF4J,score,使用,Logback23,Logback,Log4j
From: https://blog.51cto.com/u_15692628/6152128

相关文章

  • Git使用 | 解决github下载源码慢的问题
    最近,准备在github上克隆一些开源代码来学习。通常情形就是,网页半天打不开或者无法访问,大一点的git仓库也无法克隆下来。后续,通过gitee码云加速下载github代码,解决了问题。下......
  • pve proxmox virtual environment 系统安装 使用 qcow2
    在pve系统下载qcow2镜像centos7:https://cloud.centos.org/centos/7/images/wgethttps://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2在p......
  • tableau——安装,学习和简单使用
    1.安装       2.学习可视化原理  小原理:视觉映射    大原理: 3.简单使用 ......
  • PsTool使用手册
    簡介WindowsNT和Windows2000資源套件隨附許多命令列工具,可協助您管理WindowsNT/2K系統。經過一段時間後,我已經成長了一組類似的工具,包括資源套件中未包含的部分......
  • 直播系统搭建,Android使用RadioGroup+RadioButton实现导航栏
    直播系统搭建,Android使用RadioGroup+RadioButton实现导航栏主页面代码packagecom.example.taobaounion.ui.activity;importandroid.app.Activity;importandroid.os.Bu......
  • Linux下JDK和JMeter部署及使用
    一、在Linux下安装JDK并配置环境变量1、下载JDKJDK8下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html2、rz命令上传到服务器......
  • vue组件化开发---插槽的使用
    插槽基本介绍在开发中,我们会经常封装一个个可复用的组件:前面我们会通过props传递给组件一些数据,让组件来进行展示;但是为了让这个组件具备更强的通用性,我们不能将组件中......
  • 使用computed需要遵循和避免的几点原则
    遵循的原则简单明了computed不应该过于复杂或过长,而应该是简单清晰的。它应该只负责对单个变量或getter进行处理,并且最终返回一个通常与vue模板直接关联的值。可重......
  • Java数据结构 HashMap 哈希表定义使用
    1.HashMapHashMap是一个散列表,它存储的内容是键值(key-value)映射。其中key和value类型可以相同也就而已不同,根据定义。2.HashMap使用1)定义HashMap<Integer,String>hashmap1......
  • 树莓派上使用 Python编程控制 LED 教程 All In One
    树莓派上使用Python编程控制LED教程AllInOneLED面包板GPIO(......