SpringBoot 日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: SpringBoot 日志

一、概述

日志是程序的重要组成部分,程序报错了,我们可以通过查看日志信息排除和定位问题。

二、日志格式

在启动 SpringBoot 项目时,控制台中默认会打印一些日志,下面我们截取一段日志信息,分析一下日志的格式:

为什么 SpringBoot 可以设置并打印日志?

因为其内部内置了两个日志框架: SLF4J(让开发者使用和调用的框架) 和 logback(最底层实现日志相关操作的框架)

三、日志级别

日志的级别分为:

  • trace:微量,少许的意思,级别最低;
  • debug:需要调试时候的关键信息打印;
  • info:普通的打印信息(默认日志级别);
  • warn:警告,不影响使用,但需要注意的问题;
  • error:错误信息,级别较高的错误日志信息;
  • fatal:致命的,因为代码异常导致程序退出执行的事件。(只有系统能输出)

1、日志级别的作用?

日志级别可以帮我们筛选出重要的信息,将业务不需要的日志屏蔽掉。例如日志级别设置为 error 时,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了。

2、如何设置日志级别?

只需要在配置文件进行简单配置即可。

例如设置根路径的日志级别为 error:

# 在 properties 文件中设置日志级别为 error
logging.level.root=error

给 com.example.demo.model 目录下的类设置日志级别:

# 在 properties 文件中设置日志级别为 error
logging.level.com.example.demo.model=error

四、自定义日志打印

自定义日志打印主要分为两步:

  1. 在程序中得到日志对象。
  2. 使用日志对象提供的打印方法输出要打印的内容。

方式一: Logger 对象是属于 org.slf4j 包下的,我们使用日志工厂 LoggerFactory 来获取到日志对象:

private static Logger logger = LoggerFactory.getLogger(类对象);

注: 这里 LoggerFactory.getLogger() 方法中的参数是用来指定日志记录器(Logger)的名称的。通常情况下,建议使用当前类的 Class 对象作为参数,以便在日志输出时能够正确标识出日志信息所属的类。

@Controller
@ResponseBody
public class LogController {
    private static Logger logger =
            LoggerFactory.getLogger(LogController.class);
    @RequestMapping("/log")
    public void log() {
        logger.trace("trace 级别的日志信息");
        logger.debug("debug 级别的日志信息");
        logger.info("info 级别的日志信息");
        logger.warn("warn 级别的日志信息");
        logger.error("error 级别的日志信息");
    }
}

方式二: 使用 lombok

@Controller
@ResponseBody
@Slf4j
public class LogController {
    @RequestMapping("/log")
    public void log() {
        log.trace("trace 级别的日志信息");
        log.debug("debug 级别的日志信息");
        log.info("info 级别的日志信息");
        log.warn("warn 级别的日志信息");
        log.error("error 级别的日志信息");
    }
}

注: 使用 @Slf4j 注解会在当前类下添加一个名为 log 的日志对象。

注: 因为默认日志级别为 info ,因此仅输出级别大于等于 info 级别的日志。

五、日志持久化

以上的日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题后进行追随。要将日志进行持久化,只需要在配置文件中指定日志的存储目录Spring Boot 就会将控制台的日志写到相应的目录下。

例如设置日志的存储的相对目录为 log:

# 设置日志的存储的相对目录为 ./log
logging.file.path=./log
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
4天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
19 1
|
26天前
|
Java Maven Spring
SpringBoot日志整合
SpringBoot日志整合
16 2
|
1月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
76 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
25天前
|
SQL XML 监控
SpringBoot框架日志详解
本文详细介绍了日志系统的重要性及其在不同环境下的配置方法。日志用于记录系统运行时的问题,确保服务的可靠性。文章解释了各种日志级别(如 info、warn、error 等)的作用,并介绍了常用的日志框架如 SLF4J 和 Logback。此外,还说明了如何在 SpringBoot 中配置日志输出路径及日志级别,包括控制台输出与文件输出的具体设置方法。通过这些配置,开发者能够更好地管理和调试应用程序。
|
2月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
197 1
|
3月前
|
SQL Java 关系型数据库
SpringBoot 系列之 MyBatis输出SQL日志
这篇文章介绍了如何在SpringBoot项目中通过MyBatis配置输出SQL日志,具体方法是在`application.yml`或`application.properties`中设置MyBatis的日志实现为`org.apache.ibatis.logging.stdout.StdOutImpl`来直接在控制台打印SQL日志。
SpringBoot 系列之 MyBatis输出SQL日志
|
3月前
|
XML Java Maven
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
这篇文章详细介绍了如何在Spring Boot项目中使用logback进行日志记录,包括Maven依赖配置、logback配置文件的编写,以及实现的日志持久化和控制台输出效果。
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
|
3月前
|
监控 Java Serverless
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
|
3月前
|
Java Linux C++
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑