Spring Boot 系列 - 日志使用(slf4j、Logback)
Spring Boot 系列 - 日志使用(slf4j、Logback)
神奇Sam 发表于4个月前
Spring Boot 系列 - 日志使用(slf4j、Logback)
  • 发表于 4个月前
  • 阅读 49
  • 收藏 2
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

摘要: 实际开发中,日志的使用是必不可少的。对于生产环境的应用更为重要,合理使用日志能帮助我们快速定位问题,解决问题。

实际开发中,日志的使用是必不可少的。对于生产环境的应用更为重要,合理使用日志能帮助我们快速定位问题,解决问题。

以下介绍在 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 ,重新执行测试类可得结果。

> 版权声明:本文为博主原创文章,转载请注明出处。

共有 人打赏支持
粉丝 16
博文 41
码字总数 27998
×
神奇Sam
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: