SpringBoot 日志打印

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

一. 自定义打印日志

开发者自定义打印日志实现步骤:

• 在程序中得到日志对象

• 使用日志对象的相关语法输出要打印的内容.

得到日志对象:

//日志工厂需要将需要打印的类的类型传递进去,这样我们才知道日志的归属类,才能更方便的定位到文体类
private static Logger logger= LoggerFactory.getLogger(LogController.class);

注意: Logger 对象是属于 org.slf4j 包下的,不要导错包

使用日志对象打印日志:

    @RequestMapping("/log")
    public void log(){
        String mesg="今天是周五,我要成为Java高手";
        logger.trace("trace -> "+mesg);
        logger.debug("debug -> "+mesg);
        logger.info("debug -> "+mesg);
        logger.warn("warn -> "+mesg);
        logger.error("error -> "+mesg);
    }

打印日志效果:

在代码中我们明明打印了五次,但为什么只打印了三条日志信息呢? 这就又涉及到了日志级别

二. 日志级别

2.1 日志级别作用

1. 日志级别可以帮我们筛选出重要的信息,比如设置日志级别为error ,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者信息筛选的时间.


2. 日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保证性能和安全性就会输出尽量少的日志,而通过日志的级别就可以实现此需求.

2.2 日志级别的分类与使用

日志级别:

• trace:微量,少许的意思,级别最低;


• debug:需要调试的时候的关键信息打印;


• info:普通的打印信息(默认日志级别);


• warn:警告,不影响使用,但需要注意的问题;


• error:错误信息,级别较高的错误日志信息;


• fatal:致命的,因为代码异常导致程序退出执行的时间(只有系统崩溃的时候才能输出的日志级别)

日志级别顺序:

级别越高,接收到的消息就越少,如果设置了 warn 就只能收到 warn、error、fatal 级别的日志了

日志级别的设置

日志级别顺序:

级别越高,接收到的消息就越少,如果设置了 warn 就只能收到 warn、error、fatal 级别的日志了

日志级别的设置

日志级别配置只需要在配置文件中设置“logging.level” 配置项即可:

#整个项目的日志级别
logging.level.root=warn
#给文件夹单独设置级别(level后跟对应的包名)
logging.level.www.logPrint.LogController2=warn
logging.level.www.logPrint.LogController=trace

为什么Spring Boot 可以打印日志?并设置日志级别?


因为SpringBoot 内置了两个日志框架:SLF4J + LogBack


SLF4J:让开发者使用和调用框架(底层实现日志打印的框架很多,开发者无需关心调用哪个框架,开发者只需要向SLF4J提供需求就行了)


LogBacd:最底层实现日志相关操作的框架

三. 日志的持久化

日志的持久化能够保留到我们的磁盘上,方便发现问题后追溯问题

#设置日志文件的目录
logging.file.path=E:\\Code
#配置日志文件名
logging.file.name=E:\\Code\\2023_12_30
#配置日志文件名(直接写名字会在项目目录中创建一个日志文档)
logging.file.name=2023_12_30

四. 更简单的日志输出-lombok

安装插件:

添加依赖 :

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

输出日志:

//相当于@ResponseBody + @Controller
@RestController
@Slf4j
public class LogController {
//    private Logger logger
//            = LoggerFactory.getLogger(LogController.class);
    @RequestMapping("/log")
    public void log(){
        String mesg="今天是周五,我要成为Java高手";
        log.trace("trace -> "+mesg);
        log.debug("debug -> "+mesg);
        log.info("info -> "+mesg);
        log.warn("warn -> "+mesg);
        log.error("error -> "+mesg);
    }
}

注:使用 @Slf4j 注解,在程序中使用log对象即可输出日志,并且只能使用log对象才能输出,这是lombok 提供的对象名.

五. lombok原理解释

Java程序的运行原理:

Lombok 的作用如下图所示:

lombok 能够打印日志的密码就在 target 目录里面,target 为项目最终执行的代码,查看 target 目录如下 :

在编译时期,Lombok将 .java 文件编译成 .class 文件时,自动生成变量名为 log 的 Logger 对象

其他常用注解:

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
SQL 监控 Java
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
这篇文章介绍了如何在IDEA和Spring Boot中使用AOP技术实现日志信息的记录到数据库的详细步骤和代码示例。
在IDEA 、springboot中使用切面aop实现日志信息的记录到数据库
|
1月前
|
消息中间件 存储 Java
手动实现 Spring Boot 日志链路追踪:提升调试效率的利器
【8月更文挑战第8天】在复杂的分布式系统中,日志是诊断问题、追踪系统行为的重要工具。然而,随着微服务架构的普及,服务间的调用链路错综复杂,传统的日志记录方式往往难以快速定位问题源头。今天,我们将探讨如何在不依赖外部组件(如Zipkin、Sleuth等)的情况下,手动实现Spring Boot应用的日志链路追踪,让日志定位更加便捷高效。
82 1
|
2月前
|
存储 SQL Java
Spring Boot使用slf4j进行日志记录
本节课主要对 slf4j 做了一个简单的介绍,并且对 Spring Boot 中如何使用 slf4j 输出日志做了详细的说明,着重分析了 logback.xml 文件中对日志相关信息的配置,包括日志的不同级别...
|
2月前
|
Java Spring
在Spring Boot中使用AOP实现日志切面
在Spring Boot中使用AOP实现日志切面
|
2月前
|
开发框架 运维 监控
解决Spring Boot中的日志管理挑战
解决Spring Boot中的日志管理挑战
|
10天前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
50 1
|
30天前
|
SQL Java 关系型数据库
SpringBoot 系列之 MyBatis输出SQL日志
这篇文章介绍了如何在SpringBoot项目中通过MyBatis配置输出SQL日志,具体方法是在`application.yml`或`application.properties`中设置MyBatis的日志实现为`org.apache.ibatis.logging.stdout.StdOutImpl`来直接在控制台打印SQL日志。
SpringBoot 系列之 MyBatis输出SQL日志
|
1月前
|
存储 监控 Java
|
1月前
|
XML Java Maven
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
这篇文章详细介绍了如何在Spring Boot项目中使用logback进行日志记录,包括Maven依赖配置、logback配置文件的编写,以及实现的日志持久化和控制台输出效果。
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
|
1月前
|
XML Java 数据库
"揭秘!Spring Boot日志链路追踪大法,让你的调试之路畅通无阻,效率飙升,问题无所遁形!"
【8月更文挑战第11天】在微服务架构中,请求可能跨越多个服务与组件,传统日志记录难以全局追踪问题。本文以电商系统为例,介绍如何手动实现Spring Boot应用的日志链路追踪。通过为每个请求生成唯一追踪ID并贯穿全链路,在服务间传递该ID,并在日志中记录,即使日志分散也能通过ID串联。提供了实现这一机制所需的关键代码片段,包括使用过滤器设置追踪ID、业务代码中的日志记录及Logback配置。此方案显著提升了问题定位的效率,适用于基于Spring Boot构建的微服务环境。
40 4