文档章节

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

神奇Sam
 神奇Sam
发布于 2017/07/25 18:09
字数 706
阅读 131
收藏 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
粉丝 22
博文 41
码字总数 27998
作品 0
广州
程序员
spring boot(8)默认日志logback配置

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

刘胜球
2017/10/31
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
Java混乱的日志体系(logback)(转)

作为一名 Java 程序员,日常开发工作中肯定会接触日志系统,但是众多的框架,包括 Log4j、Log4j2、Logback、Slf4j、Apache Common logging 等等,引用的 maven 依赖众多,到底可以去掉哪些,...

easonjim
2017/12/27
0
0
Java日志框架:SLF4J, Apache Common-Logging, Log4J和Logba

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

凯文加内特
2015/05/08
0
0
How to log in Spring with SLF4J and Logback

Introduction 1.1. Simple Logging Facade for Java(SL4J) The SLF4J serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and ......

perfectspr
2014/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

流量劫持是如何产生的?

流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报道。只要用户没改默认密码,打开一个网页甚至帖子,路由...

谢思华
20分钟前
0
0
Hadoop Client无法使用maven下载源码

最近在学习hadoop,使用maven的时候想看一下源码的注释,结果IDEA一直提示无法下载 搞得我一度以为maven坏掉了。 但是通过搜索,发现在maven仓库里确实没有源码.... 而2.8.1以及之前的版本是...

Iceberg_XTY
21分钟前
0
0
为什么程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。 图片来自网络 0 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的...

Java小铺
23分钟前
0
0
VUE集成AdminLte

1. 安装需要到插件 npm i admin-lte -Snpm i jquery -Snpm i axios -Snpm i vue-router -S 2. 配置webpack.config.js 2.1 module.exports.module.rules修改字体loader: {test: /\.(p......

Pasenger
今天
0
0
Spring Aop原理之切点表达式解析

在前面的文章(Spring AOP切点表达式详解)中,我们总结了Spring Aop切点表达式的用法,而在上文(Spring Aop原理之Advisor过滤)中我们讲到,切点表达式的解析主要是在PatternParser.parse...

爱宝贝丶
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部