logback的使用和logback.xml详解(小结)

Logback的使用和logback.xml详解

Logback是一种高效和功能丰富的日志框架,它是log4j框架的升级版,而且使用非常简单。这里将介绍Logback的基本使用和配置文件logback.xml的详细解释。

Logback的基本使用

1. 添加Logback的依赖

首先,在项目的pom.xml文件中添加logback的依赖:

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

2. 使用Logback写日志

使用Logback写日志非常方便。首先我们需要在Java代码中申明一个Logger对象:

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

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    // 其他代码省略...
}

然后就可以通过Logger对象来输出日志了:

logger.debug("调试信息");
logger.info("普通信息");
logger.warn("警告信息,发生错误但不影响系统运行");
logger.error("错误信息,系统出现了严重错误");

在以上代码中,logger.debug()输出的级别是DEBUG,logger.info()输出的级别是INFO,logger.warn()输出的级别是WARN,logger.error()输出的级别是ERROR。

logback.xml配置文件详解

Logback的配置文件一般命名为logback.xml,并放置在classpath的根目录下。下面是一个logback.xml的模板:

<configuration>
    <!-- appender -->
    <!-- logger -->
    <!-- root -->
</configuration>

在配置文件中,有三个最常用的元素:appender、logger和root。

1. Appender

Appender是用来定义Logback输出日志的目的地。常用的Appender有ConsoleAppender、FileAppender和RollingFileAppender。

ConsoleAppender

ConsoleAppender是输出到控制台的Appender,它的示例代码如下:

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

常用的属性说明:

  • name: 定义这个Appender的名字
  • class: 定义这个Appender实现类的全限定名
  • encoder: 定义日志输出的格式,即输出的pattern模板。这里我们使用%d输出日期和时间,%thread输出线程ID,%-5level输出级别(超过5个字符长度则自动截断),%logger{36}输出日志记录器的名称(最长不超过36个字符)。

FileAppender

FileAppender是输出到文件的Appender,示例代码如下:

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

常用的属性说明:

  • name: 定义这个Appender的名字
  • class: 定义这个Appender实现类的全限定名
  • file: 定义输出日志的文件名和路径,这里我们定义输出到当前目录下的mylog.log文件。
  • encoder: 定义日志输出的格式,即输出的pattern模板。这里和ConsoleAppender一样。

RollingFileAppender

RollingFileAppender是每隔一段时间或文件大小就生成一个新文件进行输出的Appender,示例代码如下:

<appender name="myRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>mylog.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>mylog.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

常用的属性说明:

  • name: 定义这个Appender的名字
  • class: 定义这个Appender实现类的全限定名
  • file: 定义输出日志的文件名和路径,这里我们定义输出到当前目录下的mylog.log文件。
  • rollingPolicy: 定义日志切分的策略类,这里我们使用的是TimeBasedRollingPolicy,即按时间分割策略,可以根据时间规律来生成文件名,时间模板是%dt。也可以使用SizeAndTimeBasedRollingPolicy策略,即按时间和大小分割策略。
  • fileNamePattern: 定义日志文件名的格式,这里指定按日期分割,文件名类似mylog.2019-12-30.log
  • maxHistory: 定义最大保留文件的数量。

2. Logger

Logger用来记录一条日志信息,并将其输出到我们指定的Appender中。Logger实现了日志传递的机制。当某个Logger实例收到一条日志消息后,它会将这个消息传递给自己的父Logger。如果这条日志与某个Logger的关键字匹配,这个Logger会将该日志输出到我们指定的Appender中。

例如:

<logger name="com.example">
  <level value="info"/>
  <appender-ref ref="myFileAppender"/>
</logger>

这表示当类路径为com.example的日志级别为INFO级别时,它将会被输出到我们定义的myFileAppender中。

常用的属性说明:

  • name: 定义这个Logger的名字。可以以包名的形式写,例如:"com.example"
  • level: 定义日志输出的级别。可以指定为 trace、debug、info、warn、error、off。当某个logger的级别设为info时,只有收到级别为warn、error的日志才能输出。
  • additivity: 是否继承大于当前Logger的log级别,默认true。
  • appender-ref: 定义Logger输出到的Appender。

3. Root

RootLogger是所有Logger的根Logger,是Logger层次中最高级别的Logger。当一个日志请求传递到Logger层次中没有更多的Logger算子时,它会传递到RootLogger,然后通过RootLogger输出到我们指定的Appender中。

例如:

<root level="info">
  <appender-ref ref="myFileAppender"/>
</root>

这表示所有的日志信息都将首先发送到RootLogger,然后再传递给其他的Logger。在这个例子中,只有INFO级别以上的日志信息才会被记录到我们定义的myFileAppender中。

至此,我们已经学习了Logback的基本使用和logback.xml配置文件的内容和解释,在实际开发中使用Logback进行日志管理将会变得更加便捷。

示例

1. 控制台输出示例

在控制台中输出日志的示例代码如下:

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

在Java代码中使用Logger的示例代码如下:

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

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    public static void main(String[] args) {
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息,发生错误但不影响系统运行");
        logger.error("错误信息,系统出现了严重错误");
    }
}

2. 文件输出示例

把日志输出到文件中的示例代码如下:

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

在Java代码中使用Logger的示例代码如下:

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

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    public static void main(String[] args) {
        logger.debug("调试信息");
        logger.info("普通信息");
        logger.warn("警告信息,发生错误但不影响系统运行");
        logger.error("错误信息,系统出现了严重错误");
    }
}

以上示例将会把日志输出到当前目录下的mylog.log文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:logback的使用和logback.xml详解(小结) - Python技术站

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

相关文章

  • ArrayList集合初始化及扩容方式

    ArrayList是Java中常用的集合类之一,它可以动态的添加或删除元素,使用灵活方便。在使用ArrayList过程中,了解其初始化和扩容方式非常重要,能够有效提高代码效率。下面是详细讲解: ArrayList初始化 无参构造函数初始化 使用无参构造函数初始化ArrayList集合时,默认创建一个空集合,如下: ArrayList<String&gt…

    Java 2023年5月26日
    00
  • java实现微信H5支付方法详解

    Java实现微信H5支付方法详解 微信H5支付是一种便捷的支付方式,它允许用户在微信H5浏览器中完成支付。在Java中,我们可以使用微信支付官方提供的Java SDK来实现微信H5支付功能。 以下是实现微信H5支付的详细步骤: Step1:获取微信支付相关信息 首先,我们需要去申请微信支付的相关信息,包括商户号和应用密钥等。申请完成后,我们可以在微信商户平台…

    Java 2023年6月15日
    00
  • Java NIO原理图文分析及代码实现

    Java NIO原理图文分析及代码实现 简介 Java NIO(Non-blocking I/O)是一种可替代Java标准I/O的I/O API。相比传统的I/O,Java NIO提供的I/O操作更快速、更灵活,并且支持更多的操作(如块传输和多路复用)。 基本组成部分 Java NIO的核心组件主要包含以下几个部分: Channel(通道):基本的I/O操作…

    Java 2023年5月19日
    00
  • MyBatis详解如何实现Dao层接口

    下面就是“MyBatis详解如何实现Dao层接口”的完整攻略。 什么是MyBatis MyBatis是一款优秀的持久层框架,它对JDBC的操作数据库的过程进行了封装,简化了操作的流程。MyBatis具有以下特点: 简单易学,上手快 灵活性高,可以通过XML或注解的方式进行SQL语句编写 扩展性强,可以通过自定义TypeHandler、Interceptor等…

    Java 2023年5月20日
    00
  • Java开发中POJO和JSON互转时如何忽略隐藏字段的问题

    Java开发中POJO(Plain Old Java Object,简单Java对象)和JSON(JavaScript Object Notation,JavaScript对象表示法)的相互转换是非常常见的操作。但在转换过程中,可能会遇到一些字段需要被隐藏的情况,例如:密码字段、某些敏感信息等。这时候,就需要对转换过程进行忽略操作。 下面是一些处理Java开…

    Java 2023年5月26日
    00
  • Java实战之实现用户登录

    让我详细讲解Java实现用户登录的攻略吧。 1. 确定需求 在实现用户登录功能前,首先要明确用户登录所需要的基本信息。一般来说,用户登录需要包括以下几个方面: 用户名或账号 密码 登录操作 在确定了这些基本信息后,就可以进入下一步,即实现具体的登录功能。 2. 实现登录功能 接下来需要实现登录功能,具体步骤如下: 2.1 创建用户账号 在实现用户登录功能之前…

    Java 2023年5月18日
    00
  • Spring中如何操作JDBC的实现

    Spring中操作JDBC主要有以下三种方式: 使用JdbcTemplate或NamedParameterJdbcTemplate 实现JdbcOperations接口 使用SimpleJdbcInsert或SimpleJdbcCall 下面对每种方式进行详细的讲解。 1. 使用JdbcTemplate或NamedParameterJdbcTemplate …

    Java 2023年5月20日
    00
  • Java Zookeeper分布式分片算法超详细讲解流程

    Java Zookeeper分布式分片算法超详细讲解流程 简介 分片(Sharding)是一种数据库拆分技术,用于将整个数据库分成多个部分并存储在多个节点上,从而提高数据库的读写性能和可扩展性。Zookeeper是一个分布式的协调服务,也可以作为分布式分片算法的实现工具。本文将详细介绍Java Zookeeper分布式分片算法的实现过程。 什么是分布式分片 …

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