1、logback简单介绍
开源,是Log4j的改良版本
Springboot提供了一套日志系统,lockback是最优选择
2、结构
logback被分为三个组件:core、classic、access
其中,core提供了Logback的核心功能,另外两个组件在其基础之上;
classic实现了Slf4j的Api,当需要配合Slf4j使用时,需要将classic引入进来;
access为了继承Servlet环境而准备,可提供Http_accrss日志接口
3、配置
在pom.xml文件中加入:
<!--logback依赖导入-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
即可
先写一个测试类:
package com.dairy.sell;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/*
Logback测试
*/
@RunWith(SpringRunner.class)
@SpringBootTest
//@Slf4j
public class LogTest {
//添加@Slf4j注释后这里就不需要使用了
private final Logger logger= LoggerFactory.getLogger(LogTest.class);
@Test
public void test1() {
String name = "dairy";
String password = "123";
log.debug("debug");
log.info("name:{},password:{}", name, password);
log.error("error");
log.warn("warm");
}
}
其输入结果可以在控制台上查看,但是这样的方式显然太麻烦,需要添加每个需要log日志的类。所以放在注释的内容。
4、方式一:在SpringBoot的配置文件加入Logback的相关配置,如下:
// # 日志变短
logging:
pattern:
// 日志输入的格式
console: "%d -%msg%n"
// # log文件存放的位置
path: /var/log/tomcat/sell
// # log文件
file: /var/log/tomcat/sell/dairui.log
// 指定级别
level: debug
// 指定log的类
level:
com.dairy.sell.LogTest: debug
方式二:在根目录下添加logback-spring.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
// logback的核心类
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
// 设置输入的格式可点进去看源码
// defaultConverterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);
// defaultConverterMap.put("d", DateConverter.class.getName());
// defaultConverterMap.put("date", DateConverter.class.getName());
// defaultConverterMap.put("r", RelativeTimeConverter.class.getName());
// defaultConverterMap.put("relative", RelativeTimeConverter.class.getName());
// defaultConverterMap.put("level", LevelConverter.class.getName());
// defaultConverterMap.put("le", LevelConverter.class.getName());
// defaultConverterMap.put("p", LevelConverter.class.getName());
// defaultConverterMap.put("t", ThreadConverter.class.getName());
// defaultConverterMap.put("thread", ThreadConverter.class.getName());
// 对输出命名、格式、颜色等设置
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d -%msg%n
</pattern>
</layout>
</appender>
// 设置日志每天输出,并放到文件夹中
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
// 设置日志等级 默认级别是debug
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<Level>ERROR</Level>
// 静止其他的,比它等级高的
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
// 文件位置 一定要绝对位置
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/tomcat/sell/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<Level>ERROR</Level>
</filter>
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/tomcat/sell/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileErrorLog"/>
<appender-ref ref="fileInfoLog"/>
</root>
</configuration>
第二个Logback配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/home" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出,%d:日期;%thread:线程名;%-----------------5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!--日志异步到数据库 -->
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<!--日志异步到数据库 -->
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<!--连接池 -->
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender>
</configuration>
5、测试类
package com.dairy.sell;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/*
Logback测试
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LogTest {
// private final Logger logger= LoggerFactory.getLogger(LogTest.class);
@Test
public void test1() {
String name = "dairy";
String password = "123";
log.debug("debug");
log.info("name:{},password:{}", name, password);
log.error("error");
log.warn("warm");
}
}
输出结果:
2018-08-25 09:22:25.149---------- [main] INFO com.dairy.sell.LogTest - Started LogTest in 4.305 seconds (JVM running for 6.237)
2018-08-25 09:22:25.299---------- [main] INFO com.dairy.sell.LogTest - name:dairy,password:123
2018-08-25 09:22:25.299---------- [main] ERROR com.dairy.sell.LogTest - error
2018-08-25 09:22:25.300---------- [main] WARN com.dairy.sell.LogTest - warma
Spring boot-Logback
猜你喜欢
转载自blog.csdn.net/sinat_32856935/article/details/82048159
今日推荐
周排行