文档章节

Spring Boot 系列 - 日志使用(slf4j、Logback)

神奇Sam
 神奇Sam
发布于 2017/07/25 18:09
字数 706
阅读 240
收藏 2

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

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

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

© 著作权归作者所有

共有 人打赏支持
神奇Sam
粉丝 23
博文 41
码字总数 27998
作品 0
广州
程序员
私信 提问
spring boot(8)默认日志logback配置

1 日志简介 Spring Boot使用Commons Logging记录所有内部日志,但是它将底层日志实现打开,为Java.Util.Logging,Log4J2和Logback提供默认配置。 在每个案例中,loggers都预先配置,以使用控...

刘胜球
2017/10/31
0
0
Spring Boot(十)Logback和Log4j2集成与日志发展史

一、简介 Java知名的日志有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看。 1.1 JUL Java有自己的...

王磊的博客
10/30
0
0
Java日志框架:SLF4J, Apache Common-Logging, Log4J和Logba

Log4j Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;用户也可以控...

凯文加内特
2015/05/08
0
0
slf4j、jcl、jul、log4j1、log4j2、logback大总结

1 系列目录 - jdk-logging、log4j、logback日志介绍及原理- commons-logging与jdk-logging、log4j1、log4j2、logback的集成原理- slf4j与jdk-logging、log4j1、log4j2、logback的集成原理- s...

乒乓狂魔
2015/05/04
0
33
Spring Boot 自定义日志详解

本节内容基于 Spring Boot 2.0. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring Boot 自动配置原理、实战 Spring Boot 2.x 启动全...

Java技术栈
11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot jpa 访问数据库

spring boot(五):spring data jpa的使用 SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

颖辉小居
14分钟前
3
0
Quartz + Oracle 分布式Job实现

简述 实现 依赖包 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.3</version><exclusions><exclusion><groupId>com.zax......

呼呼南风
19分钟前
4
0
崛起于Springboot2.X之集成规则引擎Drools(41)

1、创建Springboot项目,勾选Web模块和lombok插件 2、添加pom其他依赖 <dependency> <groupId>org.kie</groupId> <artifactId>kie-spring</artifactId> <version>7.11.0.Fin......

木九天
27分钟前
4
0
Kylin修改context-path方法

Kylin修改context-path比较麻烦,本身kylin是前后端分离的工程,修改不是只改war,还得改前端路径 步骤如下: 1、tomcat webapps 修改 kylin.war 修改成test.war 2、vi test.war 从index.htm...

litterMo
28分钟前
2
0
怎样使用Chrome浏览器截取整个网页?

1、打开控制台:Ctrl + Shift + I 2、命令执行:Ctrl + Shift + P 3、Capture full size screenshot 浏览器会自动下载截图图片,推荐过几个扩展功能: 1.全屏幕截取网页编辑共享神器-Awesom...

近在咫尺远在天涯
31分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部