实际开发中,日志的使用是必不可少的。对于生产环境的应用更为重要,合理使用日志能帮助我们快速定位问题,解决问题。
以下介绍在 SpringBoot 中的日志使用 (以 Logback 为例,代替log4j)
一、使用日志
创建测试类,添加以下代码
package com.sam.demo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author sam
* @since 2017/7/25
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
//参数需要传入当前类,因为日志输出时会把相关类信息打印出来。正确传入当前类,有助于定位问题。
Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
public void test() {
logger.error("错误:{}", "error");
logger.info("信息:{}", "info");
logger.debug("调试:{}", "debug");
}
}
执行后如下:
可以看出,error 和 info 日志都有打印,而debug日志没打印,这是因为logback中默认的日志级别是info。下面我们通过自定义配置,修改Logback的默认配置。
二、自定义配置日志信息
第一种方式:application.properties 自定义日志配置
application.properties 中添加以下配置信息
#指定全局日志级别
logging.level=debug
#指定某个类的日志级别
logging.level.com.sam.demo.LoggerTest=info
#配置控制台的日志输出格式
logging.pattern.console=%d %msg%n
#指定生成日志文件的路径,该配置会使用默认的日志名
#logging.path=/Users/yfs/Desktop/log/
#指定生成日志文件的路径,并指定了日志名称 如:sam.log
logging.file=/Users/yfs/Desktop/log/sam.log
#指定文件日志输出格式
logging.pattern.file=%d %msg%n
重新执行测试类,查看控制台和本地日志文件可得结果。
第二种方式:logback-spring.xml xml配置方式
在根目录(resources目录下)创建 logback-spring.xml。 Logback会默认读取根目录下的logback-spring.xml的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<!-- info 日志输出 RollingFileAppender(每天滚动输出日志) -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 禁止 ERROR 日志输出-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>/Users/yfs/Desktop/log/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- error 日志输出 RollingFileAppender(每天滚动输出日志)-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤日志 只输出error日志-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>/Users/yfs/Desktop/log/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>
把第一种方式在application.properties的配置注释掉后,添加logback-spring.xml ,重新执行测试类可得结果。
版权声明:本文为博主原创文章,转载请注明出处。