文章目录

  • logging.level | 设置日志级别
  • logging.file | 指定输出日志文件的路径和名称
  • logging.path | 指定输出日志文件的路径
  • logging.pattern.console | 配置控制台输出格式
  • logging.pattern.file | 配置日志文件输出格式
  • 使用命令行改变控制台输出的日志级别
  • 在我们的程序中使用日志记录
  • 使用 XML 文件配置 Logback
  • 使用自定义日志:Log4j2
  • 参考文献

在这个页面上,我们将提供spring boot日志记录的例子。

Spring boot可以使用LogbackLog4J2java util logging

默认情况下,spring boot使用Logback进行日志记录。

默认情况下,日志被记录在控制台,也可以被记录在文件中。

LogbackJAR依赖为spring-boot-starter-logging

当我们使用任何spring boot starter时,spring-boot-starter-logging就被默认引入。我们不需要单独引入它。

如果LogbackJAR在类路径中可用,那么spring boot将始终选择Logback作为日志记录。

因此,要使用其他日志,如Log4J2,我们需要排除LogbackJAR并在类路径中添加Log4J2

要使用Logback日志,我们什么都不用做,只要在application.propertiesapplication.yml中配置日志级别就可以了。

默认情况下,ERRORWARNINFO日志级别的信息会被记录在控制台。

要改变日志级别,使用logging.level属性。

要在文件中获取日志,我们可以在属性文件中配置logging.filelogging.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.propertiesapplication.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.filelogging.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.filelogging.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.filelogging.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'

使用命令行改变控制台输出的日志级别

ERRORWARNINFO日志级别是默认显示的。

我们可以使用命令行和属性文件启用DEBUGTRACE日志级别。

假设我们有一个名为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

在我们的程序中使用日志记录

我们正在创建一个将使用SLF4JLogback的例子。为了在我们的类中使用日志,我们需要在我们的类中实例化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.propertiesapplication.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 示例 | 日志记录相关推荐

  1. Spring Boot 如何使用 JUL 进行日志记录

    Spring Boot 如何使用 JUL 进行日志记录 在 Spring Boot 中,我们可以使用多种日志框架进行日志记录.其中,JUL (Java Util Logging) 是 Java 平台自 ...

  2. Spring boot logback的使用(日志记录)

    1 在spring boot中已经自动包含了logback的jar包,如果不是spring boot需要在maven中导入依赖 <!-- https://mvnrepository.com/ar ...

  3. Spring Boot自定义注解+AOP实现日志记录

    访问Controller打印的日志效果如下: *********************************Request请求*********************************** ...

  4. Spring AOP 实现业务和异常日志记录实战

    1 业务需求:今日,公司要求对操作的业务和日志统一做处理,需要把业务表数据相关信息存入日志表中,比如表名,方法名,业务id,操作操作时间modifyTIme等等. 除了在业务主动插入日志数据之外,有个 ...

  5. 操作系统服务:logging日志记录模块

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪. 在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...

  6. Python的日志记录-logging模块的使用

    一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...

  7. pycharm console日志如何输出到txt_日志记录——logging模块

    Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等. log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > ...

  8. 基于Spring Boot配置文件的日志记录示例样本

    我们希望在Spring Boot中为不同的配置文件使用不同的日志记录配置,例如在本地运行中,我们只希望控制台日志记录和用于生产,我们希望文件记录日志支持每天滚动日志文件. 我想出了一个示例logbac ...

  9. 基于Spring Boot Profile的日志记录示例样本

    我们希望在Spring Boot中为不同的配置文件使用不同的日志记录配置,例如在本地运行中,我们只希望控制台日志记录和用于生产,我们希望文件记录日志支持每天滚动日志文件. 我提出了一个示例logbac ...

最新文章

  1. 关于学习Python的一点学习总结(56->random的使用)
  2. numpy.where用法详解,对2维数组判断解释的比较清楚的
  3. Android Studio中架包打包和依赖冲突解决
  4. js java自动部署_vue 自动化部署 jenkins 篇
  5. android一键分享功能不使用任何第三方sdk
  6. 淘宝开发平台知识点一,入门指南
  7. 月入1万的工作,招不到人,怎么办?
  8. 《深入理解Nginx:模块开发与架构解析》一3.3 如何将自己的HTTP模块编译进Nginx...
  9. Cesium源码剖析---Post Processing之物体描边(Silhouette)
  10. java邻接表无向图的创建_无向图的邻接表创建以及图的深度和…
  11. 太阳时角、太阳高度角、天顶角、太阳方位角和剖面角计算的Python程序
  12. Java实现医疗系统
  13. 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
  14. android app 运行时提示 应用专为旧版 Android 打造
  15. 达州市中学高考2021成绩查询,2020达州高考成绩揭晓,恭喜恭喜!另附成绩统计表...
  16. PHP 索引数组合并
  17. 【AutoCAD For Mac 手动删除步骤】
  18. ios CAShapeLayer
  19. java.lang.OutOfMemoryError: Metaspace
  20. vcpkg + cmake + vscode 配置教程

热门文章

  1. 设计基础决定上层建筑之go类型
  2. 36. 介绍一下 except 的作用和用法?
  3. 计算机网络组建对等网,计算机网络实验二组建WINDOWS环境下的对等网并共享资源.pdf...
  4. Struts2的配置 struts.xml Action详解
  5. 笔记本触摸板失灵修复小技巧_经营产后修复加盟店有哪些小技巧
  6. 《解剖PetShop》系列之一
  7. GitHub上有个高仿微信的开源项目,超厉害的!
  8. [读书笔记][20个月赚130亿]-第二章第二节-165号
  9. CSS元素的width和水平margin的设置
  10. 北京科技大学计算机考研贴吧,2020年北京科技大学计算机科学与技术考研经验分享...