SpringBoot之Logback 日志
- 创建一个基本的SpringBoot项目
编写一个测试方法:LoggerTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
public void test() {
logger.debug("debug...");
logger.info("info...");
logger.warn("warn...");
logger.error("error...");
}
}
运行查看结果:
默认日志等级为info所以debug日志没有打印
- 使用{}来打印日志
logger.info("name = {} , password = {}",name,password);
- 使用注解打印日志
首先加入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然后在加上@Slf4j 注解 ,在方法中使用log对象打印(idea中有时候可用需要添加插件lombok)
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
public void test() {
String name = "imooc";
String password = "123456";
log.info("name = {} , password = {}",name,password);
log.warn("warn...");
log.error("error...");
//Logger.debug("debug...");
//logger.info("name = {} , password = {}",name,password);
//logger.warn("warn...");
//logger.error("error...");
}
}
Logback的配置
日志配置可以分为两种:
- application.yml(配置简单,所做的事情也简单,不适用生产)
logging:
pattern:
console: "%d - %msg%n" #输出日志的格式
level:
com.zhihua.sell.LoggerTest: debug #指定类的日志级别
#path: D:\log #指定输出到文件夹
file: D:\log\sell.log #输出到指定文件
- logback-spring.xml (主流配置)
**<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- 负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名-->
<!-- ConsoleAppender 把日志输出到控制台 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!-- 展示的格式 -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<!-- info 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 此处每天输出日志 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch> <!-- 此处如果匹配erroe 就禁止掉,没有就启用该规则 -->
<onMismatch>ACCEPT</onMismatch>
</filter>
<!-- encoder:对日志进行格式化。-->
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!--滚动策略 此处按照时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>D:\log\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>D:\log\error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- root根目录,引用 consoleLog 日志配置-->
<root level = "info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>**