基于上篇博客,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. nginx 自启动设置

    首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令: 1 vim /etc/init.d/nginx 在脚本中添加如下命令: #!/bin/sh # # nginx ...

  2. 【Java Web开发学习】Spring配置数据源

    Spring配置数据源 转载:https://www.cnblogs.com/yangchongxing/p/10027495.html =============================== ...

  3. .net access config 相对路径

    <configuration> <connectionStrings> <add name="ConStr" connectionString=&qu ...

  4. VMware中Bridged、NAT、host-only三种网络连接模式的原理及其区别

    VMnet0:这是VMware用于虚拟桥接网络下的虚拟交换机: VMnet1:这是VMware用于虚拟Host-Only网络下的虚拟交换机: VMnet8:这是VMware用于虚拟NAT网络下的虚拟交 ...

  5. NodeJS1-2 Node JS的优点

    NodeJS并不适合所有server端的场景,它的使用场景是及其有限的,web是nodeJS最适合的场景 前端偏爱node的原因其内核就是JavaScript 前端职责范围变大,统一开发体验 在处理了 ...

  6. java8-Stream流API

    一回顾与说明 经过前面发布的三章java8的博客,你就懂得了我们为什么要用Lamda表达式,Lamda表达式的原理与函数式接口的关系,从Lamda表达式到方法引用和构造引用. 想要学Stream流你必 ...

  7. 清晰明了的javascript版动态规划

    算法是一种艺术,给人感觉很不好接近,但是一旦你和ta熟络了,你就能发现这门艺术的内在是多么美妙且多变. 对于前端来说,算法也许不是最重要的,在日常工作中,几乎很少用到.所以很多人也不是很感冒. 不过呢 ...

  8. Python基础-day01-2

    第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3​​.x 版本简介 执行 Python 程序的三种方式 解释器 -- python / python ...

  9. ssm集成(maven)& 分模块开发--详细教程

    1 maven版本的ssm 1.1 最简单的版本步骤: (1) 创建maven web项目 (2) 在pom.xml中导入依赖的jar包 (3) 再写配置文件: web.xml <!DOCTYP ...

  10. wx-all

    学习这部分时也学了不少代码,一段一段往这上面写实在有点~~~ 直接把代码部署到代码该在的地方吧,哈哈哈 这是网址 把代码放这上面就好多了,不怕代码丢,还可保证代码完整,嘻嘻嘻~~~~~~