基于上篇博客,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. CCF-CSP题解 201612-3 权限查询

    一共有三层信息,三层信息的依赖关系是: \[用户user->角色role->权限authority\] 先存储\(authority\)信息,\(role\)直接存储\(authority ...

  2. Redis Cluster 的数据分片机制

    上一篇<分布式数据缓存中的一致性哈希算法> 文章中讲述了一致性哈希算法的基本原理和实现,今天就以 Redis Cluster 为例,详细讲解一下分布式数据缓存中的数据分片,上线下线时数据迁 ...

  3. Elasticsearch 监控指标解析

    1.集群监控 集群监控主要包括两个方面的内容,分别是集群健康情况和集群的运行状态. 集群健康状态可以通过以下api获取: http://ip:9200/_cluster/health?pretty 关 ...

  4. python操作文件和目录查看、创建、删除、复制

    python内置了os模块可以直接调用操作系统提供的接口函数,os.name查询的是操作系统,‘nt’表示windows系统 >>> import os >>> o ...

  5. Nginx配置实例-反向代理实现浏览器请求Nginx跳转到服务器某页面

    场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...

  6. Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动

    场景 Linux-安装 Ubuntu Server 16.04 X64(图文教程详细版): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. mysql事务隔离级别、脏读、幻读

    Mysql事务隔离级别本身很重要,再加上可能是因为各大公司面试必问的缘故,在博客中出现的概率非常高,但不幸的是,中国的技术博客要么是转载,要么是照抄,质量参差不齐,好多结论都是错的,对于心怀好奇之心想 ...

  8. opencv检测图像直线

    #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; ...

  9. PHP-FPM 使用(含多站点多端口)

    PHP-FPM 使用 PHP-FPM 是在 Linux 环境下用来管理调度 PHP 执行的调度器,源码安装时会自动安装,PHP 安装可参考Centos 下安装 PHP (新) 查看版本 # php-f ...

  10. 获取本机的IP地址

    /// <summary> /// 获取本机IP地址 /// </summary> /// <returns>本机IP地址</returns> publ ...