原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9996897.html

SpringBoot基础系列-使用日志

概述

SpringBoot使用Common Logging进行日志操作,Common Logging是一个日志功能框架,没有具体的实现,具体的日志操作需要具体的日志框架来实现。

常用的日志框架包括:JUL(Java Util Logging)、Log4J2、Logback。

默认情况下,使用的是Logback作为底层实现。

日志格式

SpringBoot的默认的日志格式如下:

2018-11-21 10:23:34.966  INFO 12588 --- [  restartedMain] c.e.s.SpringbootdemoApplication          : Starting SpringbootdemoApplication on PC-20170621WOWM with PID 12588 (F:\Code\etongdai\etongdai-reactor\springbootdemo\target\classes started by Administrator in F:\Code\etongdai\etongdai-reactor\springbootdemo)
2018-11-21 10:23:34.968 INFO 12588 --- [ restartedMain] c.e.s.SpringbootdemoApplication : No active profile set, falling back to default profiles: default
2018-11-21 10:23:34.968 DEBUG 12588 --- [ restartedMain] o.s.boot.SpringApplication : Loading source class com.example.springbootdemo.SpringbootdemoApplication

格式为:(date) (time) (log level) (process Id) --- ([thread name]) (logger name) : (log message)

日志级别

  • ERROR(FATAL也属此类)
  • WARN
  • INFO
  • DEBUG
  • TRACE

日志输出

控制台输出

默认情况下,SpringBoot的日志就是输出控制台,而且默认是INFO级别,也就是ERROR、WARN、INFO这三个级别的日志会被输出。

设置日志级别

命令行参数
java -jar xxx.jar --debug
application.properties
debug=true

彩色输出(无甚用处)

文件输出

设置日志输出文件

application.properties

logging.file=xxx.log
logging.path=/log/

前者用于指定输出日志的文件,后者用于指定日志输出文件的位置,其名称为默认的spring.log。

设置日志文件大小

默认情况下当日志文件达到10M大小的时候就会轮转(重新开始),旧的日志内容默认会自动存档,而且自动存档默认是无限期的,可以使用如下配置:

#设置日志文件的最大尺寸,大于该尺寸,日志开始轮转
logging.file.max-size=20MB
#设置存档日志文件的最大容量
logging.file.max-history=100

日志级别

SprngBoot中集成了多个模块,我们可以对其分别进行日志级别设置:

#设置root级日志级别
logging.level.root=WARN
#设置spring web框架的日志级别
logging.level.org.springframework.web=DEBUG
#设置spring中集成的hibernate的日志级别
logging.level.org.hibernate=ERROR

日志组

为避免针对各个系统进行日志设置,提供了日志组,将相同日志级别的系统模块设置成一组,统一设置一致的日志级别,SpringBoot提供了默认的日志组,我们也能自定义日志组:

自定义日志组

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat

通过如下配置统一设置日志级别:

logging.level.tomcat=TRACE

SpringBoot内置日志组

|序号|Name|Loggers|

|1|web|org.springframework.core.codec, org.springframework.http, org.springframework.web|

|2|sql|org.springframework.jdbc.core, org.hibernate.SQL|

通过Name值即可统一设置其中包含的Loggers的日志级别

logging.level.web=DEBUG

定制Log配置

SpringBoot底层支持多种日志实现,可以通过添加某种日志系统的jar包的方式来使其自动激活可用(SpringBoot的自动配置功能的作用),然后可以通过在classpath根路径下或者是logging.config配置属性(在application.properties中配置)指定的目录下自定义日志配置文件来进行深度定制。

针对不同的日志底层实现,需要自定义不同名称的日志配置文件

|序号|Logging System|fileName|

|1|Logback|logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy|

|2|Log4j2|log4j2-spring.xml or log4j2.xml|

|3|JDK (Java Util Logging)|logging.properties|

推荐使用*-spring.xml格式命名的配置文件作为自定义日志配置文件名

扩展Logback

Spring Boot包含了许多可以帮助进行高级配置的Logback扩展。可以在logback-spring.xml配置文件中使用这些扩展。

基于profile的日志配置

可以配置在某个profile处于激活时使用的日志配置

<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

Environment属性

通过标签可以在日志配置文件中使用来自application.properties中配置的属性,因为application.properties中配置的属性会被加载到Environment中,所以也就是获取环境中的属性了。

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
<remoteHost>${fluentHost}</remoteHost>
...
</appender>

SpringBoot基础系列-使用日志的更多相关文章

  1. 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)

    [SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...

  2. SpringBoot基础系列-SpringCache使用

    原创文章,转载请标注出处:<SpringBoot基础系列-SpringCache使用> 一.概述 SpringCache本身是一个缓存体系的抽象实现,并没有具体的缓存能力,要使用Sprin ...

  3. SpringBoot基础系列-使用Profiles

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9996884.html SpringBoot基础系列-使用Profile 概述 Profi ...

  4. SpringBoot基础系列-SpringBoot配置

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...

  5. 【SpringBoot基础系列】手把手实现国际化支持实例开发

    [SpringBoot基础系列]手把手实现国际化支持实例开发 国际化的支持,对于app开发的小伙伴来说应该比价常见了:作为java后端的小伙伴,一般来讲接触国际化的机会不太多,毕竟业务开展到海外的企业 ...

  6. SpringBoot基础系列之自定义配置源使用姿势实例演示

    [SpringBoot基础系列]自定义配置源的使用姿势介绍 前面一篇博文介绍了一个@Value的一些知识点,其中提了一个点,@Value对应的配置,除了是配置文件中之外,可以从其他的数据源中获取么,如 ...

  7. 【SpringBoot基础系列-实战】如何指定 bean 最先加载(应用篇)

    [基础系列-实战]如何指定 bean 最先加载(应用篇) 在日常的业务开发中,绝大多数我们都是不关注 bean 的加载顺序,然而如果在某些场景下,当我们希望某个 bean 优于其他的 bean 被实例 ...

  8. SpringBoot文档翻译系列——26.日志logging

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7613854.html 这是SpringBoot的日志内容 26 日志 Spring使用Co ...

  9. SpringBoot基础系列一

    SpringBoot基础知识概览 特性 核心理念:约定优于配置 特点: 1. 开箱即用,根据项目依赖自动配置 2. 功能强大的服务体系,如嵌入式服务.安全 3. 绝无代码生成,不用写.xml配置,用注 ...

随机推荐

  1. jquery中$.each()的用法

    each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象.数组的属性值并进行处理.jQuery和jQuery对象都实 现了该方法,对于jQuery对象,只是把each方法简单 ...

  2. 微信小程序统计分析

    在微信公众平台社区看到一个不错的东西,小博统计:https://www.wxappdev.com/:用于微信小程序统计分析.

  3. 反沙箱——SetErrorMode

    目录 1.前言 2.原理讲解 3.代码实现 4.参考 1.前言 利用SetErrorMode进行反沙箱的技术,在2010年就有被提出,但是之前搜了很久都没有相关内容,这里简单的说一下这个反沙箱的实现. ...

  4. 算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)

    开门见山,本篇博客就介绍图相关的东西.图其实就是树结构的升级版.上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些树结构的应用.本篇博客我们就讲图的存储结 ...

  5. 【DFS】求水洼的数目

    题目: 有一个大小为 N*M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) *** *W* *** 限制条件:N, M ...

  6. Python科学计算基础包-Numpy

    一.Numpy概念 Numpy(Numerical Python的简称)是Python科学计算的基础包.它提供了以下功能: 快速高效的多维数组对象ndarray. 用于对数组执行元素级计算以及直接对数 ...

  7. [Swift]LeetCode565. 数组嵌套 | Array Nesting

    A zero-indexed array A of length N contains all integers from 0 to N-1. Find and return the longest ...

  8. [Swift]LeetCode834. 树中距离之和 | Sum of Distances in Tree

    An undirected, connected tree with N nodes labelled 0...N-1 and N-1 edges are given. The ith edge co ...

  9. Unable to preventDefault inside passive event listener due to target being treated as passive

    Unable to preventDefault inside passive event listener due to target being treated as passive 今天在做项目 ...

  10. iOS学习——Quartz2D学习之UIKit绘制

    iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...