基于上篇博客,SpringBoot系列之日志框架介绍及其原理简介博客之后,本博客可以对日志框架的具体使用做一个比较详细的描述,以此作为一篇使用的手册,以此帮助学习Springboot者

@

1、SpringBoot日志级别

1)、日志级别简介

简介一下日志级别,按照从低到高排序:trace < debug < info < warn < error,eg:假如日志级别为info,则只会打印info级别及其高级别的日志,所以在项目中,可以通过调高日志级别,打少点日志,反之,想打多点就调低日志级别

2)、默认日志级别

Springboot支持的日志级别有:TRACE, DEBUG, INFO, WARN, ERROR, FATAL, or OFF,然后默认的级别是info,写一个简单的测试类验证这个问题:

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest
class SpringbootLoggerApplicationTests { Logger LOG = LoggerFactory.getLogger(this.getClass()); @Test
void contextLoads() {
LOG.trace("this is trace log infomation....");
LOG.debug("this is debug log infomation....");
LOG.info("this is info log infomation....");
LOG.warn("this is warn log infomation....");
LOG.error("this is error log infomation....");
} }

日志打印:

2019-11-16 18:50:07.513  INFO 19152 --- [           main] c.e.s.s.SpringbootLoggerApplicationTests : this is info log infomation....
2019-11-16 18:50:07.513 WARN 19152 --- [ main] c.e.s.s.SpringbootLoggerApplicationTests : this is warn log infomation....
2019-11-16 18:50:07.513 ERROR 19152 --- [ main] c.e.s.s.SpringbootLoggerApplicationTests : this is error log infomation....

可以看出只打印了info及其高级别的日志,可是我们并没有配置什么,说明了Springboot已经做了自动配置,默认日志级别为info的

3)、配置日志级别

Springboot日志级别可以设置root根级的,也可以设置对应包下面的日志级别,如下示例:

# root日志级别为info
logging.level.root=info
# 指定org.springframework.web包级别为debug
logging.level.org.springframework.web=debug
# 指定org.hibernate包级别为error
logging.level.org.hibernate=error
# 指定com.example.springboot.springbootlogger包下面的统一用debug级别
logging.level.com.example.springboot.springbootlogger=debug

4)、日志分组设置

Springboot还提供了日志级别进行分组设置的功能,官方说法是“能够将相关记录器组合在一起,以便可以同时配置它们,这通常很有用。例如,您通常可以更改所有 Tomcat 相关记录器的日志记录级别,但您无法轻松记住顶级包。”,意思就是我们可以自己定义一个分组,然后自己设置整个分组的级别,主要原因是我们很难记得那些包名

# 日志分组设置
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
# 设置整个组的级别为trace
logging.level.tomcat=TRACE

Springboot已经有的分组,没有的分组就得自己设置

Name loggers
web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener

2、SpringBoot日志格式设置

1)、默认格式原理简介

从前面的学习可以知道,Springboot默认使用logback进行日志打印的,所以可以在Springboot的jar包里找到默认的日志格式配置org.springframework.book.logging.logback的包下面找到default.xml,也就是我们不在application.properties配置的话,就加载默认的格式

2)、默认日志格式

2019-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2019-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
  • 日期和时间:毫秒精度,易于排序。
  • 日志级别:错误、警告、信息、调试或跟踪。
  • 进程 ID。
  • 分隔符,用于区分实际日志消息的开头。
  • 线程名称:以方形括号括起来(控制台输出可能截断)。
  • 记录器名称:这通常是源类名称(通常缩写)。
  • 日志消息。

3)、自定义日志格式

application.perperties也可以加上自己的自定义配置,本博客使用boot2.2.1

# 定义控制台日志打印格式
logging.pattern.console=%d{yyyy-MM-dd} {%thread} %-5level %logger{50} - %msg%n
# 定义归档日志文件日志格式
logging.pattern.file=%d{yyyy-MM-dd} {%thread} %-5level %logger{50} - %msg%n

注意,日志格式介绍:

  • %d:日期;
  • %thread:线程名;
  • %-5level:日志级别从左显示5个字符长度,列如:DEBUG;
  • %logger{50}:java类名,例如:com.muses.taoshop.MyTest,50表示字符长度;
  • %msg:日志内容;%n:换行

4)、日志颜色设置

对于在控制台打印的日志,还可以加上必要的颜色,具体用法是开启spring.output.ansi.enabled,ANSI配置可以参考官方文档:https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/api//org/springframework/boot/ansi/AnsiOutput.Enabled.html

其实主要如下属性:

  • ALWAYS:启用ANSI彩色输出。
  • DETECT:尝试检测ANSI着色功能是否可用。
  • NEVER:禁用ANSI彩色输出。

application.properties开启

spring.output.ansi.enabled=always

具体用法是%clr(${param}){color}

logging.pattern.console=%clr(%d{yyyy-MM-dd HH24:mm:ss.SSS}){green} {%thread} %-5level %logger{50} - %msg%n

Springboot支持的颜色有:

  • blue
  • cyan
  • faint
  • green
  • magenta
  • red
  • yellow

3、日志文件归档

而对于日志归档文件的,我们也可以通过源码看到默认配置为10M的,也就是文件超过10M就自动进行归档,不需要我们自己配置



也可以在application.properties加上默认的配置

# 可以指定目录,也可以不指定,不指定的情况就在项目根目录下面创建日志文件
logging.file.name=springboot.log
# window系统在当前项目的磁盘根目录创建springboot/log文件夹,默认日志文件是spring.log
#logging.file.path=/springboot/log

logging.file.name=springboot.log,可以指定目录,也可以不指定,不指定的情况就在项目根目录下面创建日志文件

logging.file.path=/springboot/log,window系统在当前项目的磁盘根目录创建springboot/log文件夹,默认日志文件是spring.log

4、logging其它参数配置

对于Springboot怎么配置日志参数,具体可以参考Springboot官网,引用官网的logging配置,官网链接:https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/spring-boot-features.html#boot-features-logging

5、开启日志调试模式

启用调试模式后,将配置一系列核心记录器(embedded container, Hibernate, and Spring Boot)以输出更多信息。启用调试模式不会将应用程序配置为使用 DEBUG 级别,记录所有消息。

$ java -jar myapp.jar --debug

当然也可以在配置文件库开启,将debug设置为TRUE就可以

debug=true

ok,本博客只是对日志框架的基本使用进行介绍,详细的比如自定义logback配置等等,请参考我这个专栏的系列博客:https://smilenicky.blog.csdn.net/category_9195353.html

附录:

logging manual:SpringBoot日志官方手册

example source:日志配置github代码下载链接

SpringBoot系列之日志框架使用教程的更多相关文章

  1. SpringBoot系列之日志框架介绍及其原理简介

    SpringBoot系列之日志框架介绍及其原理简介 1.常用日志框架简介 市面上常用日志框架:JUL.JCL.jboss-logging.logback.log4j.log4j2.slf4j.etc. ...

  2. SpringBoot系列之RabbitMQ使用实用教程

    SpringBoot系列之RabbitMQ使用实用教程 @ 目录 1. 消息队列概述 1.1 MQ的概述 1.2 MQ目的地形式 2. 消息队列实现方式 2.1 常见MQ框架 2.2 MQ实现方式 3 ...

  3. SpringBoot系列之自定义starter实践教程

    SpringBoot系列之自定义starter实践教程 Springboot是有提供了很多starter的,starter翻译过来可以理解为场景启动器,所谓场景启动器配置了自动配置等等对应业务模块的一 ...

  4. Java 日志框架终极教程

    概述 对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中.日志 API 所能提供的功能是多种多样的, ...

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

    ========================11.Logback日志框架介绍和SpringBoot整合实战 2节课================================ 1.新日志框架L ...

  6. SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面

    前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...

  7. 【SpringBoot】整合日志框架

    一.日志框架概述 1.1 日志框架的产生 1.2 市面上的日志框架 二.SLF4j 使用与整合 2.1 如何在系统中使用SLF4j 2.2 如何整合日志框架 2.3 SpringBoot中的日志关系 ...

  8. SpringBoot整合Logback日志框架配置全解析

    目录 本篇要点 一.Logback日志框架介绍 二.SpringBoot与Logback 1.默认日志格式 2.控制台输出 3.文件输出 4.日志级别 5.日志组 6.自定义log配置 三.logba ...

  9. SpringBoot整合log4j日志框架

    Spring Boot 2.x默认使用Logback日志框架,要使用 Log4j2必须先排除 Logback. 加入修改依赖 <dependency> <groupId>org ...

随机推荐

  1. [Python]实现字符串倒序的三种方法

    a=" 1: print(a[::-1]) 2: b=list(a) b.reverse() print(''.join(b)) 3: c=len(a)-1 str_1=[] while(c ...

  2. 建议2:注意Javascript数据类型的特殊性---(3)正确检测数据类型

    使用typeof预算符返回一个用于识别其运算数类型的字符串.对于任何变量来说,使用typeof预算符总是以字符串的形式返回一下6种类型之一 number string boolean object f ...

  3. 微信小程序 wepy框架 之拦截器intercepter使用

    1,在使用wepy框架创建的项目下 找到src/app.wpy 2,在app.wpy constructor方法中添加 super(); this.use('promisify');//启用ES6 p ...

  4. CentOS7.2下部署zabbix4.0

    整体部署采用centos7+php+apache+mariadb 基础环境配置优化 1. 关闭防火墙 [root@monitor_53 ~]$ systemctl stop firewalld [ro ...

  5. Caffe源码-SyncedMemory类

    SyncedMemory类简介 最近在阅读caffe源码,代码来自BVLC/caffe,基本是参照网络上比较推荐的 Blob-->Layer-->Net-->Solver 的顺序来分 ...

  6. 在WPF中开启摄像头扫描二维码(Media+Zxing)

    近两天项目中需要添加一个功能,是根据摄像头来读取二维码信息,然后根据读出来的信息来和数据库中进行对比显示数据. 选择技术Zxing.WPFMediaKit.基本的原理就是让WPFmediaKit来对摄 ...

  7. js反爬学习(一)谷歌镜像

    1. url:https://ac.scmor.com/ 2. target:如下链接 3. 过程分析: 3.1 打开chrome调试,进行元素分析.随便定位一个“现在访问” 3.2 链接不是直接挂在 ...

  8. CMake工程找不到相应的cuDNN版本的问题

    (1) 去官网下载相应的版本,因为电脑之前安装的是 CUDA8. ,找跟 CUDA 版本兼容的 cuDNN 下载即可,我选择的是 cuDNN v7.(Deb) 和  cuDNN v7.1.4 Deve ...

  9. Docker异常:/lib/x86_64-linux-gnu/libnss_files.so.2: symbol __libc_readline_unlocked, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

    当使用docker cp 将容器内数据拷贝至主机时,或是使用docker export 命令归档容器文件时,出现下述异常: Error response from daemon: error proc ...

  10. spi-mem: 为SPI存储器生态带来一些一致性

    在本文中,我们将介绍关于spi-mem Linux内核框架的工作,该框架将允许在SPI NOR设备和常规SPI设备以及SPI NAND设备上复用SPI控制器驱动程序. 从SPI到双线.四线.八线SPI ...