之前我们学习了日志实现框架JUL、Log4j 以及 Log4j 各种配置方式,此章我们将在 log4j 的配置文件格式的基础上,学习 logback 及相关配置。

Logback简介

Logback是由log4j 创始人设计的又一个开源日志组件。

  • Logback当前分成三个模块: logback-core,logback- classic和 logback-access。
  • logback-core是其它两个模块的基础模块。
  • logback-access 访问模块与Servlet容器集成提供通过Http来访问日志的功能。
  • logback-classic是 log4j 的一个改良版本。logback-classic完整实现SLF4J API。使你可以很方便地更换成其它日志系统如log4j或JDK14-Logging。

Logback中的组件

  • Logger:日志的记录器,主要用于存放日志对象,也可以定义日志类型、级别。
  • Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
  • Layout:负责把事件转换成字符串,格式化的日志信息的输出。在 Logback 中 Layout 对象被封装在encoder中。 也就是说我们未来使用的 encoder 其实就是Layout

Logback 配置文件

Logback提供了3种配置文付

  • logback.groovy
  • logback-test.xml 
  • logback.xml(常用)

如果都不存在则采用默认的配置

Logback 日志输出格式

日志输出格式: 

  • %-10level级别案例为设置10个字符,左对齐
  • %d{yyyy-MM-dd HH:mm:ss.sss}日期
  • %c当前类全限定名
  • %M当前执行日志的方法
  • %L行号
  • %thread线程名称
  • %线程线程名称
  • %m或者%msg信息
  • %n换行

Logback.xml  常用标签

  • <configuration>:根标签,一起配置都是在根标签下配置
  • <root>:日志记录器,指定日志级别和使用的appender,可以配置多个appender。
  • <property>:配置通用属性,方便后面的配置通过${name}形式引用。
  • <appender>:配置控制,可以是控制、文件等。
  • <target>:appender的子标签,日志输出目标的配置,用于配置字体、编码、格式等。
  • <encoder>:配置日志输出格式,在 Logback 中 Layout 对象被封装在encoder中。

Logback 入门案例

01、在pom文件中添加 Logback 依赖,如下: 

<dependencies>
    <!--  slf4j核心依赖   -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!-- Logback 日志实现 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.11</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

02、创建测试类,如下:

public class LogbackTest {
    @Test
    public void test() {
        // logback 日志的5种级别的输出方式
        // 从低到高依次是 trace < debug < info < warn < error
        Logger logger = LoggerFactory.getLogger(LogbackTest.class);
        logger.error("error 错误信息,不会影响系统运行");
        logger.warn("warn 警告信息,可能会发生问题");
        logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
        logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
        logger.trace("trace 追踪信息,记录程序所有的流程信息");
    }
}

03、无配置文件 logback.xml 进行测试,测试结果如下:

java logback 代码 java logback日志序列化_java logback 代码

logback.xml配置

 01、配置输出到控制台

001、在resources下创建logback.xml ,使用配置文件 logback.xml 配置输出到控制台,配置如下:

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

    <!--  property 配置通用属性,方便后面的配置通过${name}形式引用  -->
    <!--  %-10level级别案例为设置10个字符,左对齐
          %d{yyyy-MM-dd HH:mm:ss.sss}日期
          %c当前类全限定名
          %M当前执行日志的方法
          %L行号
          %thread线程名称
          %线程线程名称
          %m或者%msg信息
          %n换行  -->
    <!--  配置日志输出格式  -->
    <!--  以property形式将日志输出格式配置为文件通用的属性,后面配置输出方式可以重复复引用该通用属性 -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/>
    <!--  配置控制台 appender  -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志输出目标的配置
             默认:System.out 表示黑色字体输出日志
             设置:System.err 表示红色字体输出日志
          -->
        <target>
            System.err
        </target>
        <!--  配置日志输出格式  -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

            <!--  引用 输出格式的 通用配置属性  -->
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>
    <!--  配置日志记录器  -->
    <root level="All">
        <!--  引入appender  -->
        <appender-ref ref="consoleAppender"></appender-ref>
    </root>
</configuration>

002、启动测试类,进行测试,测试结果如下:

java logback 代码 java logback日志序列化_java logback 代码_02

02、配置输出到文件

 001、在resources下创建logback.xml ,使用配置文件 logback.xml 配置输出到控制台,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/>
    <!--  配置文件输出路径  -->
    <property name="logDir" value="./logs"/>

    <!--  配置控制台 appender  -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <target>
            System.err
        </target>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

<!--  配置文件 appender  -->
    <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
        <!--  引入文件位置  -->
        <file>${logDir}/logback.log</file>
        <!--  配置日志输出格式  -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--  引用 输出格式的 通用配置属性  -->
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!--  配置日志记录器  -->
    <root level="All">
        <!--  引入appender  -->
        <appender-ref ref="consoleAppender"></appender-ref>
        <appender-ref ref="fileAppender"></appender-ref>
    </root>
</configuration>

 002、启动测试类,进行测试,测试结果如下:

java logback 代码 java logback日志序列化_xml_03

03、配置输出Html格式

 001、在resources下创建logback.xml ,使用配置文件 logback.xml 配置输出到控制台,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--  配置日志输出格式  -->   
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/>

    <!--  配置文件输出路径  -->
    <property name="logDir" value="./logs"/>


    <!--  配置 appender 的html文件  -->
    <appender name="htmlFileAppender" class="ch.qos.logback.core.FileAppender">
        <!--  引入文件位置  -->
        <file>${logDir}/logback.html</file>
        <!--  配置日志输出格式  -->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.classic.html.HTMLLayout">
                <!--  引用 输出格式的 通用配置属性  -->
                <pattern>${pattern}</pattern>
            </layout>

        </encoder>
    </appender>

    <!--  配置日志记录器  -->
    <root level="All">
        <!--  引入appender  -->
        <appender-ref ref="htmlFileAppender"></appender-ref>
    </root>
</configuration>

002、启动测试类,进行测试,测试结果如下:

java logback 代码 java logback日志序列化_开发语言_04

04、按大小拆分文件

 001、在resources下创建logback.xml ,使用配置文件 logback.xml 配置输出到控制台,配置如下:

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

    <!--  配置日志输出格式  -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/>

    <!--  配置文件输出路径  -->
    <property name="logDir" value="./logs"/>

    <!--  配置控制台 appender  -->
    <appender name="rollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--  引入文件位置  -->
        <file>${logDir}/roll_logback.log</file>
        <!--  配置日志输出格式  -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--  引用 输出格式的 通用配置属性  -->
            <pattern>${pattern}</pattern>
        </encoder>
        <!--  拆分规则  -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--  按时间和压缩格式声明文件名 压缩格式gz  -->
            <fileNamePattern>${logDir}/roll.%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
            <!--  按文件大小拆分  -->
            <maxFileSize>1kb</maxFileSize>
        </rollingPolicy>
    </appender>

    <!--  配置日志记录器  -->
    <root level="All">
        <!--  引入appender  -->
        <appender-ref ref="rollingFileAppender"></appender-ref>
    </root>
</configuration>

002、修改测试类:

package com.hwadee.log;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {
    @Test
    public void test() {
    // logback 日志的5种级别的输出方式
    // 从低到高依次是 trace < debug < info < warn < error
    Logger logger = LoggerFactory.getLogger(LogbackTest.class);
        for (int i = 0; i < 1000; i++) {            
            logger.error("error 错误信息,不会影响系统运行");
            logger.warn("warn 警告信息,可能会发生问题");
            logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
            logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
            logger.trace("trace 追踪信息,记录程序所有的流程信息");
        }
    }
}

003、启动测试类,进行测试,测试结果如下:

java logback 代码 java logback日志序列化_xml_05

05、按频率(时间)生成日志文件

 001、在resources下创建logback.xml ,使用配置文件 logback.xml 配置输出到控制台,配置如下:

002、启动测试类,进行测试,测试结果如下:

06、配置输出到数据库

 001、在pom文件中添加数据库连接驱动依赖,如下:

注意:如果要输出到数据库,必须 logback-classic 版本是1.2.7及一下版本,否则logback.xml中配置<appender name="dbAppender" class="ch.qos.logback.classic.db.DBAppender"> 的DBAppender 不生效。

<dependencies>
    <!--  slf4j核心依赖   -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
    </dependency>
    <!-- Logback 日志实现 如果是使用到数据库,则版本必须是1.2.7及以下版本 -->
<!--    <dependency>-->
<!--      <groupId>ch.qos.logback</groupId>-->
<!--      <artifactId>logback-classic</artifactId>-->
<!--      <version>1.2.11</version>-->
<!--    </dependency>-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.7</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <!-- 这个依赖必须存在 在springboot中使用,否则会报java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource-->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.17</version>
    </dependency>
  </dependencies>

002、创建数据库表,mysql脚本在

logback-classic/src/main/java/ch/qos/logback/classic/db/script 中,如图:

java logback 代码 java logback日志序列化_开发语言_06

 脚本如下:

BEGIN;
DROP TABLE IF EXISTS logging_event_property;
DROP TABLE IF EXISTS logging_event_exception;
DROP TABLE IF EXISTS logging_event;
COMMIT;
 
 
BEGIN;
CREATE TABLE logging_event 
  (
    timestmp         BIGINT NOT NULL,
    formatted_message  TEXT NOT NULL,
    logger_name       VARCHAR(254) NOT NULL,
    level_string      VARCHAR(254) NOT NULL,
    thread_name       VARCHAR(254),
    reference_flag    SMALLINT,
    arg0              VARCHAR(254),
    arg1              VARCHAR(254),
    arg2              VARCHAR(254),
    arg3              VARCHAR(254),
    caller_filename   VARCHAR(254) NOT NULL,
    caller_class      VARCHAR(254) NOT NULL,
    caller_method     VARCHAR(254) NOT NULL,
    caller_line       CHAR(4) NOT NULL,
    event_id          BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
  );
COMMIT;
 
BEGIN;
CREATE TABLE logging_event_property
  (
    event_id          BIGINT NOT NULL,
    mapped_key        VARCHAR(254) NOT NULL,
    mapped_value      TEXT,
    PRIMARY KEY(event_id, mapped_key),
    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
  );
COMMIT;
 
BEGIN;
CREATE TABLE logging_event_exception
  (
    event_id         BIGINT NOT NULL,
    i                SMALLINT NOT NULL,
    trace_line       VARCHAR(254) NOT NULL,
    PRIMARY KEY(event_id, i),
    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
  );
COMMIT;

003、在resources下创建logback.xml ,使用配置文件 logback.xml 配置输出到控制台,配置如下:

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

    <!--  配置日志输出格式  -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/>
    <!--  配置文件输出路径  -->
    <property name="logDir" value="./logs"/>
    <!--  配置控制台 appender  -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <target>
            System.err
        </target>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!--  配置文件输出路径  -->
    <property name="jdbcurl"
              value="jdbc:mysql://localhost:3306/cqyddx?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai"/>

    <!--日志异步到数据库  -->
    <appender name="dbAppender" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="org.apache.commons.dbcp.BasicDataSource">
                <!--   这里是不需要设置驱动的,设置了反而会报错             <driverClass>com.mysql.jdbc.Driver</driverClass>-->
                <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
                <url>jdbc:mysql://localhost:3306/cqyddx?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai</url>
                <username>root</username>
                <password>root</password>
                <!-- <sqlDialect class="ch.qos.logback.core.db.dialect.MySQLDialect"/>-->
            </dataSource>
        </connectionSource>
    </appender>

    <!--  配置日志记录器  -->
    <root level="All">
        <!--  引入appender  -->
        <appender-ref ref="consoleAppender"></appender-ref>
        <appender-ref ref="dbAppender"></appender-ref>
    </root>
</configuration>

002、启动测试类,进行测试,测试结果如下:

package com.hwadee.log;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {
    @Test
    public void test() {
            Logger logger = LoggerFactory.getLogger(LogbackTest.class);
            logger.error("error 错误信息,不会影响系统运行");
            logger.warn("warn 警告信息,可能会发生问题");
            logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
            logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
            logger.trace("trace 追踪信息,记录程序所有的流程信息");
    }
}

java logback 代码 java logback日志序列化_xml_07

07、配置LevelFilter与ThresholdFilter过滤器

001、LevelFilter

        LevelFilter级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:

  • <level>:设置过滤级别
  • <onMatch>:用于配置符合过滤条件的操作
  • <onMismatch>:用于配置不符合过滤条件的操作

<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 配置日志输出格式 --> <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/> <!-- 配置文件输出路径 --> <property name="logDir" value="./logs"/> <!-- 配置控制台 appender --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <target> System.err </target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> <!-- 设置 LevelFilter 过滤器 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 日志过滤级别 --> <level>WARN</level> <!-- 级别等于 level 中设置的级别,则打印日志 --> <onMatch>ACCEPT</onMatch> <!-- 级别不等于 level 中设置的级别,则屏蔽日志 即不打印日志 --> <onMismatch>DENY</onMismatch>

 启动测试类,测试结果如下:

package com.hwadee.log;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {
    @Test
    public void test() {
            Logger logger = LoggerFactory.getLogger(LogbackTest.class);
            logger.error("error 错误信息,不会影响系统运行");
            logger.warn("warn 警告信息,可能会发生问题");
            logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
            logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
            logger.trace("trace 追踪信息,记录程序所有的流程信息");
    }
}

java logback 代码 java logback日志序列化_java logback 代码_08

 002、ThresholdFilter:

       ThresholdFilter临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。例如:过滤掉所有低于INFO级别的日志。

<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- 配置日志输出格式 --> <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/> <!-- 配置文件输出路径 --> <property name="logDir" value="./logs"/> <!-- 配置控制台 appender --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <target> System.err </target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> <!-- 设置 临界值过滤器 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!-- 日志过滤级别 --> <level>WARN</level> <!-- <level>ERROR</level>--> <!-- 级别等于 level 中设置的级别,则打印日志 --> <onMatch>ACCEPT</onMatch> <!-- 级别不等于 level 中设置的级别,则屏蔽日志 即不打印日志 --> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 配置日志记录器 --> <root level="All"> <!-- 引入appender --> <appender-ref ref="consoleAppender"></appender-ref> </root> </configuration>

 启动测试类,测试结果如下:

package com.hwadee.log;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {
    @Test
    public void test() {
            Logger logger = LoggerFactory.getLogger(LogbackTest.class);
            logger.error("error 错误信息,不会影响系统运行");
            logger.warn("warn 警告信息,可能会发生问题");
            logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
            logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
            logger.trace("trace 追踪信息,记录程序所有的流程信息");
    }
}

java logback 代码 java logback日志序列化_开发语言_09

08、异步日志 

      在使用异步日志之前,我们先看同步日志,配置和代码及运行结果如下:

<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- 配置日志输出格式 --> <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/> <!-- 配置文件输出路径 --> <property name="logDir" value="./logs"/> <!-- 配置控制台 appender --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <target> System.err </target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> </appender> <!-- 配置日志记录器 --> <root level="All"> <!-- 引入appender --> <appender-ref ref="consoleAppender"></appender-ref> </root> </configuration>

package com.hwadee.log;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {
    @Test
    public void test() {
        // logback 日志的5种级别的输出方式
        // 从低到高依次是 trace < debug < info < warn < error
        Logger logger = LoggerFactory.getLogger(LogbackTest.class);
        for (int i = 0; i < 100; i++) {
            logger.error("error 错误信息,不会影响系统运行");
            logger.warn("warn 警告信息,可能会发生问题");
            logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
            logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
            logger.trace("trace 追踪信息,记录程序所有的流程信息");

        }

        System.out.println("1---------------------------------");
        System.out.println("2---------------------------------");
        System.out.println("3---------------------------------");
        System.out.println("4---------------------------------");
        System.out.println("5---------------------------------");

    }
}

java logback 代码 java logback日志序列化_java logback 代码_10

停滞的状态当日志记录完毕后,才会执行其他的代码,如果日志记录量非常庞大的话,那么我们对于系统本身业务代码的执行效率会非常低,得所以logback为我们提供了异步日志的功能,

异步日志的功能:

       配置方式如下:

<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- 配置日志输出格式 --> <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/> <!-- 配置文件输出路径 --> <property name="logDir" value="./logs"/> <!-- 配置控制台 appender --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <target> System.err </target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> </appender> <!-- 引入异步日志 appender --> <appender name="asyncAppender" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="consoleAppender" /> </appender> <!-- 配置日志记录器 --> <root level="All"> <!-- 引入appender --> <appender-ref ref="asyncAppender"></appender-ref> </root> </configuration>

运行启动类,运行结果如下:

java logback 代码 java logback日志序列化_xml_11

09、自定义Logger

配置文件、代码及运行结果

<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- 配置日志输出格式 --> <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.sss} %c %M %L %thread %m%n"/> <!-- 配置文件输出路径 --> <property name="logDir" value="./logs"/> <!-- 配置控制台 appender --> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <target> System.err </target> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${pattern}</pattern> </encoder> </appender> <!-- 使用自定义Logger   name="com.hwadee" 用于指定包   level="info" 用于指定级别 additivity="false" 表示不继承 rootLogger --> <logger name="com.hwadee" level="info" additivity="false"> <!-- 在定义的 logger 中配置 appender --> <appender-ref ref="consoleAppender"/> </logger> </configuration>

package com.hwadee.log;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogbackTest {
    @Test
    public void test() {
        // logback 日志的5种级别的输出方式
        // 从低到高依次是 trace < debug < info < warn < error
        Logger logger = LoggerFactory.getLogger(LogbackTest.class);

        logger.error("error 错误信息,不会影响系统运行");
        logger.warn("warn 警告信息,可能会发生问题");
        logger.info("info 运行信息,数据连接、网络连接、I0操作等等");
        logger.debug("debug 调试信息,一般在开发中使用,记录程序变量参数传递信息等等");
        logger.trace("trace 追踪信息,记录程序所有的流程信息");

    }
}

java logback 代码 java logback日志序列化_xml_12

logback配置文件转换

关于不同的日志实现,配置文件也是不同的
例如:log4j经常使用的是log4j.properties属性文件,logback使用的是logback.xm1配置文件。
将log4j.properties,改造为logback.xml,可以使用1ogback言网log4j.properties转换器工具。

案例如下:

java logback 代码 java logback日志序列化_开发语言_13

 转换结果如下:

java logback 代码 java logback日志序列化_java logback 代码_14