Java日志框架之logback使用详解

Java日志框架之logback使用详解

1. 什么是logback

logback是一个优秀的Java日志框架,是log4j框架的继任者,具有与log4j相同的特性,通用性广、性能高、配置简单等优点,是目前Java项目中最常用的日志框架之一。

2. logback的基本使用方式

2.1 引入依赖

使用logback框架首先需要引入相应的依赖,通常情况下我们在Maven项目的pom.xml文件中添加以下依赖即可:

<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>

2.2 配置文件

logback的配置文件通常为logback.xml或logback.groovy,其中logback.xml为配置文件的扩展名,一般来说我们使用xml格式进行配置。

一份简单的配置文件如下:

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

上述配置文件中,我们定义了一个名为STDOUT的追加器(appender),配置了输出日志到控制台的信息,%d表示日期时间,%thread表示线程名,%-5level表示日志级别,%logger表示日志输出名,%msg表示日志消息,%n表示换行符。

另外,我们还定义了名为com.foo.Bar的日志记录器(logger),级别为DEBUG。最后,我们将根logger的日志级别设置为INFO,并用appender-ref元素将它连接到名为STDOUT的追加器上。

2.3 使用日志

在代码中使用logback需要定义一个变量,示例代码如下:

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

public class HelloWorld {  
    private static final Logger LOGGER = LoggerFactory.getLogger(HelloWorld.class);  

    public static void main(String[] args) {  
        LOGGER.info("Hello World!");  
    }  
} 

上述代码中,我们先引入org.slf4j下的Logger和LoggerFactory类,通过LoggerFactory类的getLogger方法获取一个Logger对象,最后在main方法中使用LOGGER对象输出日志。

3. logback的进阶用法

3.1 日志分级

logback支持6个级别的日志输出,包括TRACE、DEBUG、INFO、WARN、ERROR、FATAL,级别从低到高,输出的日志级别越高则输出的信息越具体、越严重。

我们可以通过调整配置文件中logger的level属性来进行日志分级:

<logger name="com.foo.Bar" level="TRACE"/>
<logger name="com.foo.Foo" level="DEBUG"/>
<logger name="org.springframework" level="INFO"/>

上述代码中,我们将com.foo.Bar记录器的日志级别设置为TRACE,com.foo.Foo记录器的日志级别设置为DEBUG,将org.springframework记录器的日志级别设置为INFO。

3.2 日志输出方式

logback支持多种日志输出方式,包括控制台输出、文件输出、异步输出等。我们可以通过修改配置文件来设置输出方式。

以下是一个输出到文件的示例配置:

<configuration>    
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">    
        <file>example.log</file>    
        <append>true</append>    
        <encoder>    
            <pattern>%date %level [%thread] %logger{10} [%file:%line] %message%n</pattern>    
        </encoder>    
    </appender>    
    <root level="DEBUG">    
        <appender-ref ref="FILE"/>    
    </root>    
</configuration>    

在上述配置文件中,我们定义了一个名为FILE的追加器,将日志输出到当前运行目录下的example.log文件中。

通过修改配置文件中appender元素的class属性,我们可以选择不同的输出方式,例如控制台输出、异步输出等。

3.3 自定义日志输出格式

logback支持自定义日志输出格式,我们可以修改配置文件来设置自定义的日志输出格式。

以下是一个自定义输出格式的示例:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%yellow(%d{HH:mm:ss.SSS}) [%-5p] %blue([%C:%L])%n%m%n</pattern>
    </encoder>
</appender>

上述配置文件中,我们定义了一个控制台追加器,并使用PatternLayoutEncoder来定义日志输出格式。在输出格式中,使用%d来表示日期时间,%p来表示日志级别,%C表示日志输出类名,%L表示日志输出位置,%m表示日志输出信息。

另外,我们调用了一些自定义的颜色代码,在输出日志时可以为日志信息添加不同的颜色标识以便更容易的辨别不同的日志级别。

4. logback的示例说明

4.1 控制台输出示例

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

public class ConsoleDemo {
    private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleDemo.class);

    public static void main(String[] args) {
        LOGGER.trace("I am trace log.");
        LOGGER.debug("I am debug log.");
        LOGGER.info("I am info log.");
        LOGGER.warn("I am warn log.");
        LOGGER.error("I am error log.");
    }
}

在以上示例代码中,我们通过获取Logger对象输出了5个不同级别的日志信息。运行代码输出的日志信息如下:

[main] TRACE io.github.jaychoufans.Consoletest - I am trace log.
[main] DEBUG io.github.jaychoufans.Consoletest - I am debug log.
[main] INFO io.github.jaychoufans.Consoletest - I am info log.
[main] WARN io.github.jaychoufans.Consoletest - I am warn log.
[main] ERROR io.github.jaychoufans.Consoletest - I am error log.

4.2 文件输出示例

<configuration>
    <appender name="FileAppender" class="ch.qos.logback.core.FileAppender">
        <file>logs/example.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="FileAppender"/>
    </root>
</configuration>

在以上示例中,我们将日志输出到logs/example.log文件中,日志格式与之前相同,运行代码输出的日志信息如下:

2021-11-11 20:47:27.145 [main] INFO  io.github.jaychoufans.FileOutputDemo - I am info log.
2021-11-11 20:47:27.146 [main] WARN  io.github.jaychoufans.FileOutputDemo - I am warn log.
2021-11-11 20:47:27.148 [main] ERROR io.github.jaychoufans.FileOutputDemo - I am error log.

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java日志框架之logback使用详解 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 花小猪打车怎么实时打车?花小猪打车实时打车教程

    以下是“花小猪打车怎么实时打车? 花小猪打车实时打车教程”的完整攻略: 花小猪打车怎么实时打车? 花小猪打车是一款移动出行软件,用户可以通过该软件实现实时打车。以下是一些操作步骤和示例说明。 步骤1:下载并安装花小猪打车 在使用花小猪打车实时打车前,需要先下载并安装花小猪打车。以下是一些下载和安装花小猪打车的方法: 在应用商店中搜索“花小猪打车”,下载并安装…

    html 2023年5月18日
    00
  • Ajax::prototype 源码解读

    让我详细讲解一下“Ajax::prototype 源码解读”的完整攻略。 标题 第一步是给这个攻略添加合适的标题。根据内容,可能会考虑使用如下标题: “Ajax::prototype 源码解读: 一个简要介绍和代码示例”。 介绍 在介绍中,我们需要明确我们要讲解的主题和目的,以及预期受众。下面是一个例子: 在这篇攻略中,我们将讲解Ajax::prototyp…

    html 2023年5月30日
    00
  • 详解XML编程中的模式定义XSD

    XML(Extensible Markup Language)是一种标记语言,它是用于描述数据的格式和元素之间的关系的。 在进行XML编程的过程中,往往需要使用XSD(XML Schema Definition)定义数据格式和数据之间的关系。本文将深入解释XSD的相关概念,详细讲解如何使用模式定义XSD,并提供相关示例。 1. XSD的相关概念 在理解如何使…

    html 2023年5月30日
    00
  • IntelliJ IDEA 2021 Tomcat 8启动乱码问题的解决步骤

    下面是详细讲解“IntelliJ IDEA 2021 Tomcat 8启动乱码问题的解决步骤”的完整攻略: 问题描述 当使用IntelliJ IDEA 2021作为开发工具,并且Tomcat 8作为服务器时,在启动Tomcat时可能会遇到乱码问题,导致服务器无法正常启动。这个问题可能会让一些开发者困惑。 问题分析 问题的原因是由于Tomcat 8默认使用的是…

    html 2023年5月31日
    00
  • java操作xml的方法汇总及解析

    Java操作XML的方法汇总及解析 在Java中,我们可以使用多种方式来操作XML文件。下面将介绍常见的几种方式及其优缺点。 DOM方式 DOM(Document Object Model)是一种基于树形结构的XML解析方式,它将整个XML文件解析到内存中,并形成一棵树,我们可以通过访问树节点的方式来操作XML。 优点: 可以对XML进行增删改查等操作 可以…

    html 2023年5月30日
    00
  • 解决git 提交后中文字符会乱码的问题

    为了解决git提交后中文字符会乱码的问题,需要进行以下步骤: 确认本地git配置 首先需要在git bash中输入以下命令查看本地git的配置: git config –global -l 确认配置中是否存在以下两条信息: core.quotepath=false i18n.commitencoding=UTF-8 如果配置中不存在这两条信息,则需要添加。…

    html 2023年5月31日
    00
  • Vbs脚本经典教材(最全的资料还是MSDN)

    Vbs脚本经典教材(最全的资料还是MSDN) 完整攻略 介绍 Vbs脚本是一种常用的可以在Windows环境下运行的脚本语言,通常用于简化日常重复操作、自动化任务等。MSDN作为一个官方文档,提供了完整的Vbs脚本教程和资料,可以帮助初学者快速入门和了解Vbs脚本的基本语法、功能、用法和应用场景。 使用步骤 以下为使用MSDN获取Vbs脚本经典教材的完整攻略…

    html 2023年5月30日
    00
  • oracle如何合并多个sys_refcursor详解

    本文将介绍Oracle数据库中如何以PL/SQL方式合并多个sys_refcursor。在实际应用中,我们有时需要将多个查询结果集合并为一张表或逐条输出,这时候就需要用到sys_refcursor进行多个查询结果集的传递。 准备工作 在进行手动合并之前,我们需要创建一些测试数据以供演示使用。在此我们创建两个表student和course,然后再以学生和课程为…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部