首页 > 编程语言 >浅谈Java库之SLF4j

浅谈Java库之SLF4j

时间:2024-11-28 11:31:01浏览次数:8  
标签:xml slf4j Java 浅谈 SLF4j SLF4J logger logback 日志

一、SLF4J 介绍

        SLF4J(Simple Logging Facade for Java)是一个简单日志门面,它为各种日志框架提供了一个统一的抽象层。SLF4J 允许开发者在部署时选择所需的日志框架,而不需要在代码中硬编码具体的日志实现。这种设计使得在不同的日志框架之间切换变得非常简单,只需更换绑定的日志实现库即可,无需修改代码。

二、SLF4J 功能

1、统一的API

SLF4J 提供了一个统一的API,使得开发者可以使用相同的方法记录日志,而无需关心底层日志框架的具体实现。

2、多种日志框架支持

SLF4J 支持多种日志框架,包括 Logback、Log4j、Java Util Logging 等。

3、参数化日志记录

SLF4J 支持使用 {} 作为占位符的参数化日志记录消息,提高了日志记录的效率和可读性。

4、灵活的配置

日志的格式、记录级别、输出方式等都可以通过具体的日志系统配置来实现,而不是硬编码在代码中。

三、SLF4J 使用方法

环境配置

1、引入依赖:在 Maven 的 pom.xml 文件中引入 SLF4J 的依赖。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.32</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

如果是使用 Gradle,则在 build.gradle 文件中添加相应的依赖。

2、配置日志框架:以 Logback 为例,需要创建一个 logback.xml 配置文件,并放置在 src/main/resources 目录下。

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

3、编写日志代码:使用 SLF4J 提供的 LoggerLoggerFactory 来记录日志。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerTest {
    private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
    public static void main(String[] args) {
        logger.info("Current Time: {}", System.currentTimeMillis());
    }
}

SLF4J 支持使用 {} 作为占位符,这样可以避免字符串拼接,提高效率。

四、SLF4J 完整代码示例

1. Maven 依赖配置(pom.xml)

首先,你需要在你的 pom.xml 文件中添加 SLF4J API 和 Logback 的依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>slf4j-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- SLF4J API -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.32</version>
        </dependency>
        <!-- Logback Classic Implementation -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
</project>

2. 日志配置文件(logback.xml)

src/main/resources 目录下创建 logback.xml 文件,用于配置 Logback。

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

3. Java 代码示例

创建一个 Java 类来使用 SLF4J 记录日志。

package com.example.slf4jdemo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggingExample {
    // 创建一个 Logger 实例
    private static final Logger logger = LoggerFactory.getLogger(LoggingExample.class);

    public static void main(String[] args) {
        // 记录不同级别的日志
        logger.trace("Trace message: {}", 123);
        logger.debug("Debug message: {}", 123);
        logger.info("Info message: {}", 123);
        logger.warn("Warn message: {}", 123);
        logger.error("Error message: {}", 123);

        // 抛出异常并记录
        try {
            int divisionResult = 10 / 0;
        } catch (Exception e) {
            logger.error("Exception occurred", e);
        }
    }
}

4、运行程序

当你运行 LoggingExample 类时,Logback 会根据 logback.xml 中的配置将日志输出到控制台。你将看到不同级别的日志消息,以及异常信息。

这个示例展示了如何配置和使用 SLF4J 与 Logback 在 Java 应用程序中记录日志。你可以根据需要调整日志级别和输出格式。

标签:xml,slf4j,Java,浅谈,SLF4j,SLF4J,logger,logback,日志
From: https://blog.csdn.net/a876106354/article/details/144106577

相关文章

  • 浅谈Java库之Spring Framework
    一、SpringFramework介绍        SpringFramework是一个功能强大的Java应用程序框架,旨在提供高效且可扩展的开发环境。它结合了轻量级的容器和依赖注入功能,提供了一种使用POJO进行容器配置和面向切面的编程的简单方法,以及一组用于AOP的模块。Spring框架还支......
  • JAVA WEB和Tomcat各组件概念
    概述本篇文章是https://juejin.cn/post/7055306172265414663,这篇文章的再总结,剔除了与Java安全研究没太大关系的内容,对JAVAWEB中的Servlet、Filter、Listener以及Connector、Container则加重了篇幅。ServletServlet是运行在Web服务器或应用服务器上的程序,它充当了客户端HTT......
  • leetcode hot100【LeetCode 169. 多数元素】java实现
    LeetCode169.多数元素题目描述给定一个大小为n的数组nums,找到其中的多数元素。多数元素是指在数组中出现次数大于n/2的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:nums=[3,2,3]输出:3示例2:输入:nums=[2,2,1,1,1,2,......
  • 深入理解Java基础之MAP
     一、MAP简介        MAP是Java中的一种数据结构,以键值对的形式存储数据,常用于快速查找和操作数据。         Map集合类存储元素时,采用“键”和“值”的方式存储。Map中常见的构造函数定义多样,如Map<String,String>map=newHashMap<String,......
  • Java学习,接口
    接口,JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法,接口则包含类要实现的方法。除非实现接口的类是抽象......
  • Java学习,继承(1)
    Java继承是面向对象的编程特性,允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的字段和方法。通过继承,子类可以获得父类的所有公共(public)和保护(protected)成员,并可以添加新的成员或覆盖(override)父类的方法。基本概念父类(SuperClass):被继承的类。子类(SubClass):继承父类......
  • javaweb基于JSP+Servlet开发学生选课系统源码(管理员 教师 学生) 课程设计 毕业设计
    ......
  • 通过javap反编译接口
    在Java中,接口(interface)中的方法默认都是public和abstract的,即使在源代码中没有显式地指定这两个修饰符。当你编写:publicinterfacePerson{voideat();voidsleep();}实际上等价于:publicinterfacePerson{publicabstractvoideat();publicab......
  • Java学习笔记——2024.11.27
    2024.11.27一、字符类型1.字符类型初探可以存放一个汉字(2字节)或者数字(这个c4存储的应该是ASCII编码为97的字符,也就是a)2.字符类型细节publicclassChardetial{publicstaticvoidmain(String[]args){charc1=97;System.out.println(c1)......
  • java小白入门学习之---类变量和类方法
    一、类变量(静态变量/静态属性)1.什么是类变量?类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量类变量在类加载时就初始化了(所以即使没有创建对象,只要类加载......