之前我们学习了日志实现框架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 进行测试,测试结果如下:
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、启动测试类,进行测试,测试结果如下:
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、启动测试类,进行测试,测试结果如下:
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、启动测试类,进行测试,测试结果如下:
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、启动测试类,进行测试,测试结果如下:
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 中,如图:
脚本如下:
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 追踪信息,记录程序所有的流程信息");
}
}
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 追踪信息,记录程序所有的流程信息");
}
}
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 追踪信息,记录程序所有的流程信息");
}
}
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---------------------------------");
}
}
停滞的状态当日志记录完毕后,才会执行其他的代码,如果日志记录量非常庞大的话,那么我们对于系统本身业务代码的执行效率会非常低,得所以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>
运行启动类,运行结果如下:
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 追踪信息,记录程序所有的流程信息");
}
}
logback配置文件转换
关于不同的日志实现,配置文件也是不同的
例如:log4j经常使用的是log4j.properties属性文件,logback使用的是logback.xm1配置文件。
将log4j.properties,改造为logback.xml,可以使用1ogback言网log4j.properties转换器工具。
案例如下:
转换结果如下: