【Spring Boot】Spring Boot Logging 示例 | 日志记录
文章目录
- logging.level | 设置日志级别
- logging.file | 指定输出日志文件的路径和名称
- logging.path | 指定输出日志文件的路径
- logging.pattern.console | 配置控制台输出格式
- logging.pattern.file | 配置日志文件输出格式
- 使用命令行改变控制台输出的日志级别
- 在我们的程序中使用日志记录
- 使用 XML 文件配置 Logback
- 使用自定义日志:Log4j2
- 参考文献
在这个页面上,我们将提供spring boot
日志记录的例子。
Spring boot
可以使用Logback
、Log4J2
、java util logging
。
默认情况下,spring boot
使用Logback
进行日志记录。
默认情况下,日志被记录在控制台,也可以被记录在文件中。
Logback
的JAR
依赖为spring-boot-starter-logging
。
当我们使用任何spring boot starter
时,spring-boot-starter-logging
就被默认引入。我们不需要单独引入它。
如果Logback
的JAR
在类路径中可用,那么spring boot
将始终选择Logback
作为日志记录。
因此,要使用其他日志,如Log4J2
,我们需要排除Logback
的JAR
并在类路径中添加Log4J2
。
要使用Logback
日志,我们什么都不用做,只要在application.properties
或application.yml
中配置日志级别就可以了。
默认情况下,ERROR
、WARN
和INFO
日志级别的信息会被记录在控制台。
要改变日志级别,使用logging.level
属性。
要在文件中获取日志,我们可以在属性文件中配置logging.file
或logging.path
。
当日志文件达到10MB
时,将进行轮换。
找到属性文件中配置的spring
环境。
logging.level.* : 它用作包名称的前缀,用于设置日志级别。
logging.file : 它配置了一个日志文件名来记录文件中的信息。我们也可以用绝对路径配置文件名。
logging.path : 它只配置了日志文件的路径。Spring boot
创建了一个名为spring.log
的日志文件。
logging.pattern.console : 它定义了控制台中的日志模式。
logging.pattern.file: 它定义了文件中的日志模式。
logging.pattern.level: 它定义了渲染日志级别的格式。默认是%5p
。
logging.exception-conversion-word : 它定义了记录异常时的转换词。
PID : 它定义了当前的进程ID。
我们将在此讨论如何使用Logback
,并使用application.properties
和application.yml
以及Logback
XML
文件配置日志属性。
我们还将提供如何在我们的spring boot
应用程序中启用Log4J2
日志记录。
logging.level | 设置日志级别
logging.level
用于设置日志级别。
日志级别可以是TRACE
, DEBUG
, INFO
, WARN
, ERROR
, FATAL
, OFF
之一。
日志级别可以在根级和包级设置。
对于这个演示,我们正在创建一个有以下依赖关系的应用程序。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>
我们可以按以下方式设置日志级别。使用 src\main\resources\application.properties
logging.level.root= WARN
logging.level.org.springframework.security= DEBUG
logging.level.org.springframework.web= ERROR
logging.level.org.hibernate= DEBUG
logging.level.org.apache.commons.dbcp2= DEBUG
找到属性文件的位置
如果使用 src\main\resources\application.yml
,配置如下
logging:level:root: WARN org:springframework:security: DEBUGweb: ERROR hibernate: DEBUG apache:commons:dbcp2: DEBUG
logging.file | 指定输出日志文件的路径和名称
默认情况下,spring boot
在控制台显示日志,但如果我们想在日志文件中记录日志,我们需要定义logging.file
或logging.path
属性。
这里我们将了解logging.file
属性的使用。
logging.file
属性用于定义日志文件名。
它可以是唯一的文件名或带有路径的文件名。
在application.properties
中配置logging.file
的例子。
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUGlogging.file = mylogfile.log
在这种情况下,一个名为mylogfile.log
的日志文件将被创建在项目的根目录下。我们也可以给日志文件指定一个路径,即 concretepage/mylogfile.log
。在这种情况下,日志文件将以相对于项目根目录的concretepage/mylogfile.log
的路径创建。我们也可以为日志文件的位置指定一个绝对路径。
在application.yml
中配置logging.file
的例子。
logging:level:org:springframework:security: DEBUGhibernate: DEBUGfile: mylogfile.log
logging.path | 指定输出日志文件的路径
为了获得日志文件,我们需要定义logging.file
或logging.path
属性。这里我们将了解logging.path
属性的使用。logging.path
属性用于定义日志文件的路径。一个名为spring.log
的日志文件将在给定的路径中被创建。
在application.properties
中配置logging.path
的例子。
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUGlogging.path = concretepage/logs
一个名为spring.log
的日志文件将被创建,路径为concretepage/logs/spring.log
,相对于项目的根目录。
我们也可以为日志文件的位置指定一个绝对路径。
在application.yml
中配置logging.path
的例子。
logging:level:org:springframework:security: DEBUGhibernate: DEBUGpath: concretepage/logs
logging.pattern.console | 配置控制台输出格式
要改变控制台的日志模式,我们需要使用logging.pattern.console
属性。
日志模式包括日期、时间、日志级别、线程名称、日志者名称和消息。
我们可以根据我们的要求改变控制台中的日志模式,如下。
使用application.properties
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUGlogging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
使用application.yml
logging:level:org:springframework:security: DEBUGhibernate: DEBUGpattern:console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
logging.pattern.file | 配置日志文件输出格式
要改变文件中的日志模式,我们需要在属性文件中配置logging.pattern.file
。但首先,我们需要启用文件中的日志记录。通过在属性文件中配置logging.file
或logging.path
,可以启用文件中的日志记录。
使用application.properties
logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUGlogging.path = concretepage/logs
logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
为了启用文件中的日志记录,我们使用logging.path
属性。一个名为spring.log的日志文件将在相对于项目根目录的concretepage/logs中创建。logging.pattern.file属性将设置文件中的日志模式,logging.pattern.console属性将设置控制台的日志模式。
使用application.yml
logging:level:org:springframework:security: DEBUGhibernate: DEBUGpath: concretepage/logspattern:file: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
使用命令行改变控制台输出的日志级别
ERROR
、WARN
和INFO
日志级别是默认显示的。
我们可以使用命令行和属性文件启用DEBUG
和TRACE
日志级别。
假设我们有一个名为my-app.jar
的可执行jar
,那么要启用DEBUG
级别,请按以下方式启动该应用程序。
java -jar my-app.jar --debug
同样也可以通过属性文件来实现,配置属性如下。
使用application.properties
debug=true
使用application.yml
debug: true
以同样的方式,我们可以使用命令行启用TRACE
级别的日志。
java -jar my-app.jar --trace
同样也可以通过属性文件来实现,配置属性如下。
使用application.properties
trace=true
使用application.yml
trace: true
在我们的程序中使用日志记录
我们正在创建一个将使用SLF4J
与Logback
的例子。为了在我们的类中使用日志,我们需要在我们的类中实例化org.slf4j.Logger
。找到这个例子。
MyApplication.java
package com.concretepage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {private static final Logger logger = LoggerFactory.getLogger(MyApplication.class); public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);logger.debug("--Application Started--");}
}
通过application.properties
中的其他日志配置,启用com.concretepage
包的日志记录。
logging.level.root= WARN
logging.level.org.springframework.web= ERROR
logging.level.com.concretepage= DEBUG
输出
2017-03-25 19:03:54.189 DEBUG 4828 --- [ main] com.concretepage.MyApplication : Running with Spring Boot v1.5.2.RELEASE, Spring v4.3.7.RELEASE
2017-03-25 19:03:54.189 INFO 4828 --- [ main] com.concretepage.MyApplication : No active profile set, falling back to default profiles: default
2017-03-25 19:03:58.846 INFO 4828 --- [ main] com.concretepage.MyApplication : Started MyApplication in 5.209 seconds (JVM running for 5.66)
2017-03-25 19:03:58.846 DEBUG 4828 --- [ main] com.concretepage.MyApplication : --Application Started--
使用 XML 文件配置 Logback
默认情况下,spring boot
使用Logback
,我们在application.properties
或application.yml
中配置日志级别。如果我们想对Logback
使用XML
配置,那么我们需要在类路径中创建logback-spring.xml
文件。
src\main\resources\logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml"/><logger name="org.springframework.web" level="ERROR"/><logger name="com.concretepage" level="DEBUG"/>
</configuration>
使用自定义日志:Log4j2
当我们使用任何spring boot
启动器时,Logback
依赖项spring-boot-starter-logging
被默认解决在类路径中。要使用Log4j2
,我们需要排除它并包含spring-boot-starter-log4j2
,如下所示。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
现在在类路径中创建log4j2-spring.xml
并配置日志。
参考文献
【1】Spring Boot features: Logging
【2】How-to guides: Logging
【3】Spring Boot Logging Example
【Spring Boot】Spring Boot Logging 示例 | 日志记录相关推荐
- Spring Boot 如何使用 JUL 进行日志记录
Spring Boot 如何使用 JUL 进行日志记录 在 Spring Boot 中,我们可以使用多种日志框架进行日志记录.其中,JUL (Java Util Logging) 是 Java 平台自 ...
- Spring boot logback的使用(日志记录)
1 在spring boot中已经自动包含了logback的jar包,如果不是spring boot需要在maven中导入依赖 <!-- https://mvnrepository.com/ar ...
- Spring Boot自定义注解+AOP实现日志记录
访问Controller打印的日志效果如下: *********************************Request请求*********************************** ...
- Spring AOP 实现业务和异常日志记录实战
1 业务需求:今日,公司要求对操作的业务和日志统一做处理,需要把业务表数据相关信息存入日志表中,比如表名,方法名,业务id,操作操作时间modifyTIme等等. 除了在业务主动插入日志数据之外,有个 ...
- 操作系统服务:logging日志记录模块
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪. 在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...
- Python的日志记录-logging模块的使用
一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...
- pycharm console日志如何输出到txt_日志记录——logging模块
Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等. log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > ...
- 基于Spring Boot配置文件的日志记录示例样本
我们希望在Spring Boot中为不同的配置文件使用不同的日志记录配置,例如在本地运行中,我们只希望控制台日志记录和用于生产,我们希望文件记录日志支持每天滚动日志文件. 我想出了一个示例logbac ...
- 基于Spring Boot Profile的日志记录示例样本
我们希望在Spring Boot中为不同的配置文件使用不同的日志记录配置,例如在本地运行中,我们只希望控制台日志记录和用于生产,我们希望文件记录日志支持每天滚动日志文件. 我提出了一个示例logbac ...
最新文章
- 关于学习Python的一点学习总结(56->random的使用)
- numpy.where用法详解,对2维数组判断解释的比较清楚的
- Android Studio中架包打包和依赖冲突解决
- js java自动部署_vue 自动化部署 jenkins 篇
- android一键分享功能不使用任何第三方sdk
- 淘宝开发平台知识点一,入门指南
- 月入1万的工作,招不到人,怎么办?
- 《深入理解Nginx:模块开发与架构解析》一3.3 如何将自己的HTTP模块编译进Nginx...
- Cesium源码剖析---Post Processing之物体描边(Silhouette)
- java邻接表无向图的创建_无向图的邻接表创建以及图的深度和…
- 太阳时角、太阳高度角、天顶角、太阳方位角和剖面角计算的Python程序
- Java实现医疗系统
- 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
- android app 运行时提示 应用专为旧版 Android 打造
- 达州市中学高考2021成绩查询,2020达州高考成绩揭晓,恭喜恭喜!另附成绩统计表...
- PHP 索引数组合并
- 【AutoCAD For Mac 手动删除步骤】
- ios CAShapeLayer
- java.lang.OutOfMemoryError: Metaspace
- vcpkg + cmake + vscode 配置教程
热门文章
- 设计基础决定上层建筑之go类型
- 36. 介绍一下 except 的作用和用法?
- 计算机网络组建对等网,计算机网络实验二组建WINDOWS环境下的对等网并共享资源.pdf...
- Struts2的配置 struts.xml Action详解
- 笔记本触摸板失灵修复小技巧_经营产后修复加盟店有哪些小技巧
- 《解剖PetShop》系列之一
- GitHub上有个高仿微信的开源项目,超厉害的!
- [读书笔记][20个月赚130亿]-第二章第二节-165号
- CSS元素的width和水平margin的设置
- 北京科技大学计算机考研贴吧,2020年北京科技大学计算机科学与技术考研经验分享...