SpringBoot整合日志框架LogBack

SpringBoot整合Logback日志框架配置全解析 由于日志服务一般都在ApplicationContext创建前就初始化了,它并不是必须通过Spring的配置文件控制。因此通过系统属性和传统的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。Logback, orLog4j2orlog4j2.xmlSpringBoot官方推荐使用带有-spring的文件名作为配置,如而不是。这样命名的好处在于:因为标准的配置文件加载得太早,所以不能在其中使用扩展,需要使用。 阅读详情

日志可以记录我们应用程序的运行情况,我们可以通过日志信息去获取应用程序更多的信息。常用处理java日志的组件有:slf4j、log4j、logback、common-logging等。其中log4j是使用得最多的日志组件。

而LogBack是基于Log4j基础上大量改良的一种日志框架,但是它不能单独使用,推荐配合日志框架SLF4J来使用。

LogBack当前分成三个模块:logback-core、logback-classic和logback-access;其中logback-core是其它两个模块的基础,就像spring框架里的spring-core一样。


Logback的核心对象

  • Logger:日志记录器
  • Appender:指定日志输出的目的地,目的地可以是控制台,文件
  • Layout:日志布局,指定日志信息的输出的格式

日志级别

  • DEBUG
  • INFO
  • WARN
  • ERROR

DEBUG < INFO < WARN < ERROR

我们一般不会去选择DEBUG级别,因为DEBUG级别会输出很多信息,包括一些无用的信息。


Log4j转换到LogBack

因为目前使用得最广泛的还是Log4j,要想转换到LogBack,可以使用这个转换工具。

比方说我们现在有一个log4j.properties文件。

### 设置日志记录器###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=D://logs/error.log文件里 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=D://logs/error.log文件里 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 

使用上面的转换工具可以快速的将log4j.properties转换为logback.xml格式的文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

 <!--输出到控制台 -->
 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <Target>System.out</Target>
    <!--encoder即layout布局 -->
    <encoder>
      <pattern>[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n</pattern>
    </encoder>
  </appender>

  <!--将DEBUG级别的日志输出到文件 -->
  <appender name="D" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <Append>true</Append>
    <File>D://logs/log.log</File>
    <encoder>
      <pattern>%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>DEBUG</level>
    </filter>
  </appender>

  <!--将ERROR级别的日志输出到文件 -->
  <appender name="E" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>E://logs/error.log</File>
    <Append>true</Append>
    <encoder>
      <pattern>%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>ERROR</level>
    </filter>
  </appender>

  <!--日志记录器 -->
  <root level="debug">
    <appender-ref ref="stdout"/>
    <appender-ref ref="D"/>
    <appender-ref ref="E"/>
  </root>
</configuration>

可以看到转换前后的各个元素是相互对应的。


SpringBoot整合LogBack

SpringBoot官方文档里面说:

There are a lot of logging frameworks available for Java. Do not worry if the above list seems confusing. Generally, you do not need to change your logging dependencies and the Spring Boot defaults work just fine

大致意思就是,SpringBoot整合了许多的日志框架,你可能不知道的到底应该选用哪个,但是SpringBoot为你考虑了,就用它默认的配置就OK,而它默认使用的就是LogBack。

1.1、日志格式(Log Format)

SpringBoot默认输出的日志格式是这样的。

2014-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

下面从左边开始依次做说明:

  • 日志产生的时间,精确到毫秒
  • 日志级别
  • PID:进程ID
  • 输出日志的线程名
  • 输出日志的完成类名
  • 详细信息

SpringBoot启动默认输出的 [INFO] 级别。

1.2、自定义日志格式

使用Log4j日志框架时,我们创建的是 log4j.properties 文件。现在SpringBoot默认使用的是LogBack框架,官方建议日志配置文件取名为 logback-spring.xml。

下面是随意写的一个日志的配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration> 
     <appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </layout>
    </appender>

    <appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        <!-- 滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                   <!-- 输出路径 -->
                   <fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>

        <!-- 设置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>

            <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
            <maxHistory> 是1,则只保存最近1个月的文件,删除之前的旧文件 -->
             <MaxHistory>1</MaxHistory>         
        </rollingPolicy>
    </appender>
    <!--注意这个节点要写在最后 -->
    <root level="INFO">  
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>
</configuration>

< root level="INFO" > 的意思是,SpringBoot会输出INFO级别以上的日志信息。

下面我们来测试一下。

@RestController
public class LogBackTest {
    //注意Logger和LoggerFactory类都是org.slf4j包里的。
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("/log")
    public String testLog(){
        logger.debug("this is debug level");
        logger.info("this is info level");
        logger.error("this is error level");
        logger.warn("this is warn level");
        return "sussecc";
    }
}

访问localhost:8080/log。控制台输出了三行自定义的日志:

2018-06-13 16:44:44.648 INFO [http-nio-8080-exec-3]com.example.demo.controller.LogBackTest.testLog:16 -this is info level
2018-06-13 16:44:44.649 ERROR[http-nio-8080-exec-3]com.example.demo.controller.LogBackTest.testLog:17 -this is error level
2018-06-13 16:44:44.651 WARN [http-nio-8080-exec-3]com.example.demo.controller.LogBackTest.testLog:18 -this is warn level

没有DEBUG级别的日志,是因为在日志配置文件中我们设置的是< root level="INFO" > 。

下面看日志信息输出到文件里的情况:

这里写图片描述

在app.err.2018-06-13.log文件中只有ERROR级别的信息,这是因为这个文件对应的appender中我们使用的的Filter是ch.qos.logback.classic.filter.ThresholdFilter
其中<level>ERROR</level>,意思是只接收ERROR级别的日志信息写入。

在app.info.2018-06-13.log文件中只有INFO和WARN级别的信息,这是因为虽然在文件对应的appender中我们使用的Filter是ch.qos.logback.classic.filter.LevelFilter,其中过滤规则是:

<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>

意思是只接收除了ERROR级别外的日志文件。当然不包括DEBUG级别,因为我们一开始在<root>节点里就没有让DEBUG级别的日志信息输出。

以上就是SpringBoot里使用LogBack的大致思路,更多的资料可以查阅SpringBoot的官方文档。

SpringBoot整合logback日志框架详解(提供Gitee源码) 本篇博客主要介绍如何把主流的日志框架快速整合到目前的SpringBoot框架中,对六种日志等级进行介绍以及使用方法。目前常用的就四个级别,由高到低分别是ERROR、WARN、INFO、DEBUG,在SpringBoot框架中可以控制打印输出的日志级别,例如配置成了INFO级别的日志,那么在INFO级别以下的日志将不会被打印出来。 阅读详情

相关推荐

波动性GARCH模型与波动率预测(代码+结果分析)

本文介绍的ARCH、GARCH模型可以刻画出随时间变化的条件异方差。

celiaweiwei的博客 2万+

logback 日志输出配置

logback 日志输出配置

.NET 人工智能实践 1201

光线追踪渲染实战:蒙特卡洛路径追踪及其c++实现

光线追踪超越了传统的图形流水线,是一种现代的渲染。光线追踪是一种基于物理的渲染方法,通过模拟光在介质中的真实表现来输出足以逼近现实的图像。光线从光源出发,经过各种反射折射,进入摄像机。通过渲染方程描述一点的颜色,并且通过蒙特卡洛方法求解渲染方程来获取最终的像素颜色。

AKGWSB 's blog 1万+

Logback 格式修饰器(Format modifiers)

Logback 格式修饰器(Format modifiers) 默认情况下日志输出是未加任何修饰的。然而,格式修饰器可以帮助改变每个数据字段的最小、最大宽度和如何处理超长的字符。 可选的格式修饰符是放置百分号和转换字符或字处理之间。 第一个可选的格式修饰符是左对齐标志,它是仅仅是减号(- )字符。接着是可选的最小字段宽度修饰符。这是一个十进制常数,表示输出的最少字符...

weixin_33851604的博客 335

AVL_Cruise_interface\Simulink联合仿真

分享了AVL_Cruise通过interface模块与Simulink进行联合仿真的过程

qq_64735036的博客 2677

人形机器人系列——硬件介绍

人形机器人是多领域交叉技术的产物,主要由三大系统组成:感知系统、决策系统和执行系统。感知系统感知系统是人形机器人获取外界信息的途径,主要由各种传感器组成。其中,视觉传感器用于获取图像信息,如摄像头、激光雷达等;触觉传感器用于感知触碰和压力,如力/力矩传感器、声学传感器等。这些传感器收集到的信息为机器人的决策和执行提供基础。决策系统决策系统是人形机器人的大脑,负责处理和决策各种信息。它由芯片和算法组成。芯片是硬件基础,提供计算能力;算法是软件基础,用于处理和分析传感器收集到的信息,并做出相应的决策。执行系统。

liangwqi的博客 1万+

logback的配置文件(logback.xml)常用配置详解

***********************************************详解 and ******************************************   一:根节点包含的属性:   scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置

Char_CN的专栏 5758

信息奥赛课课通(C++)p154-1近似排序

试题描述 读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30. 输入要求 1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中1≤第一个数≤第二个数≤999999999,两个数之差不超过100. 输出要求 输出排序后的数据,每行输出...

mengdicfm的博客 7281

SpringBoot整合Slf4j+logback日志框架

转载于 https://www.cnblogs.com/gavincoder/p/10090592.html SpringBoot整合Slf4j+logback日志框架 一、Slf4j简单介绍与优势 1、介绍   Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现...

chencaw的专栏 9041

1. 基于STM32的1.28寸圆形IPS屏(GC9A01)驱动移植实战:软件SPI与硬件SPI双方案详解

本文详细介绍了如何在STM32平台上为1.28寸圆形IPS屏(GC9A01驱动芯片)移植驱动程序,涵盖软件SPI与硬件SPI两种实现方案。内容从引脚定义、工程搭建、GPIO配置到SPI外设初始化逐步详解,并提供了完整的测试代码,帮助开发者根据项目需求(灵活性或性能)选择合适的通信方式,快速点亮屏幕并集成到智能手表等嵌入式项目中。

weixin_42300144的博客 203

金三银四!风控建模岗面试题库大全:从理论到实战避坑指南

风控建模面试大全

阿黎逸阳的博客 767

Springboot--整合Logback 日志框架(Maven)

在项目调试和运行中,都可能涉及到 日志的输出,本文对springboot 整合Logback 日志框架进行介绍。Logback 是一个灵活的日志框架,旨在替代传统的 Apache Log4j 框架。它是由 Ceki Gülcü 开发,并且支持 SLF4J 日志接口。:Logback 的核心模块,提供了日志事件处理和过滤的基本功能。Logger、Appender、Layout 和 Filter 等关键组件都在这个模块中定义。

拽着尾巴的鱼儿的博客 3136

十一、增强现实

那都是n年前的老版本了,新版本完全没有这个问题,我就是纠结这个问题,搭建若干环境,又是vmware虚拟机,又是msys2,又是anaconda,又是找机器,折腾了几天,结果通通不是。以一张实际卡片为锚点,通过笔记本的摄像头,在显示器上将一个计算机内的3d物体显示在卡片上,类似于电影上看到的那种全息投影技术;如果你是想在windows环境下开发linux运行程序,那么CygWin/gcc是你的不二之选。而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择。

3188

springboot 指定 logback_Spring Boot知识系列—Spring Boot整合日志框架【详解】

作者:耶亚希出自:优快云原文:blog.youkuaiyun.com/m0_45270667/article/details/109027985?utm_medium=distribute.pc_category.none-task-blog-hot-13.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-13...

weixin_39609620的博客 201

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Springboot 整合 logback 日志框架

logback 日志

quokka56的博客 616

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Springboot整合日志框架logback

Springboot整合日志框架logback 前言: logback框架的主要作用就是把我们的微服务项目的日志进行持久化生成文件我们再通过ELK进行日志的管理等,下面是简单的日志框架的整合部署以及配置 logback框架的相关maven依赖: <!--日志依赖--> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId&gt

lmd770013209的博客 1827

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring Boot整合Logback日志框架及高并发下的性能优化

Logback是由Log4j的创始人Ceki Gülcü设计的日志框架,旨在作为Log4j的替代品。:提供了Logback的核心功能。:实现了SLF4J API,可以与Logback-core结合使用。:与Servlet容器集成,提供HTTP访问日志功能。高性能:Logback在性能上优于Log4j,尤其是在高负载情况下。灵活的配置:支持XML和Groovy格式的配置文件。自动重新加载配置:可以在运行时动态修改日志配置,无需重启应用。丰富的过滤功能:支持多种日志过滤机制。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 3005

SpringBoot整合Slf4j+logback日志框架并自定义日志颜色

先上效果图 第一步:pom.xml 增加依赖 <properties> <java.version>1.8</java.version> <!-- 添加slf4j的jar包时如果报错,先确定版本, 版本要和项目maven的slf4j-log4j12 版本保持一致,不然pom....

。度的博客 6813

【SpringBoot】Logback日志框架介绍和SpringBoot整合实战

========================11、Logback日志框架介绍和SpringBoot整合实战 2节课================================ 1、新日志框架LogBack介绍 简介:日志介绍和新日志框架Logback讲解 1.常用处理java的日志组件 slf4j,log4j,logback,common-logging 等 2、logbac...

weixin_30679823的博客 192

SpringBoot整合Logback日志框架

在application.yml中添加logging:pattern:1234该属性用于定制日志控制台输出格式。该属性用于定制日志文件输出格式。上述配置的编码中,对应符号的含义如下%d{HH:mm:ss.SSS}——日志输出时间%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用%-5level——日志级别,并且使用5个字符靠左对齐%logger- ——日志输出者的名字%msg——日志消息%n——平台的换行符123456。

qq_39921135的博客 1598

SpringBoot2.x 整合logback日志框架

一、使用篇 1、Maven依赖 <!--Begin LogBack Log--> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback</groupId> ...

日拱一卒 1664

SpringBoot -03 SpringBoot整合MybatisPlus、MP分页插件、Logback日志框架

SpringBoot整合MybatisPlus、MP分页插件、Logback日志框架

yinying293的博客 1247
上一篇: 阿里云部署Redis服务器远程连接问题
下一篇: 使用wait/notify实现线程间的通信
KKSJS
博客等级 码龄9年 16粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值