尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Spring Boot 项目三种打印日志的方法详解。Logger,log,logger 解读。
目录一. 打印日志的常见三种方法1.1 手动创建 Logger 对象基于SLF4J API1.2 使用 Lombok 插件的 Slf4j 注解1.3 使用 Spring 的 Log 接口使用频率较低二. 常见的 Loggerloggerlog是有什么关系吗三. 日志的级别和推荐级别一. 打印日志的常见三种方法1.1 手动创建 Logger 对象基于SLF4J API第一种方法就是手动创建 logger 日志对象直接通过 LoggerFactory 日志工厂创建即可使用 Logger 类型来接收这里实例对象就叫 logger。SLF4J 是日志门面Facade它提供统一的日志接口不直接实现日志功能。核心类org.slf4j.Logger是 SLF4J 的核心接口通过LoggerFactory.getLogger()创建实例。打印日志也可以单个或多个参数具体实例如下图注意每个{}对应一个参数即可并且参数顺序要对的上。import com.markerhub.entity.User; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.time.LocalDateTime; public class MyClass { // 通过 LoggerFactory 日志工厂创建日志对象 private static final Logger logger LoggerFactory.getLogger(MyClass.class); public static void main(String[] args) { // 用法一单个参数 logger 日志打印 String message abcde; logger.info(这是手动创建的 logger 对象打出的日志打印单个参数{}, message); // 用法二多个参数 logger 日志打印 int number 100; String message2 abcdefg; long time 1000000000000000000L; logger.info(这是手动创建的 logger 对象打出的日志打印多个参数{},{},{}, number, message2, time); // 用法三对象参数 logger 日志打印 User user1 new User(); user1.setUsername(zhangsna); user1.setPassword(123456); user1.setCreated(LocalDateTime.now()); user1.setEmail(123456qq.com); user1.setStatus(1); logger.info(这是手动创建的 logger 对象打出的日志打印对象参数{}, user1); logger.debug(debug 日志); logger.error(error 日志); } }运行程序如下控制台打印所示可以看出 info 就是普通的日志debug 是调试日志error 是错误日志。这里之所以有颜色区分是因为小编使用了插件插件名称Grep Console有需要的小伙伴可以搜索看下使用教程。1.2使用 Lombok 插件的 Slf4j 注解第二种方法最简单直接使用 Slf4j 注解但需要注意IDEA中需要安装了 Lombok 插件并且你的 spring boot 项目中引用了 lombok 依赖。Slf4j 是lombok插件提供的一个注解用于自动生成 SLF4J 的Logger实例减少样板代码。其底层还是通过第一种方式去新建的 logger 对象。dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /dependency如下代码注解在类的头上添加 Slf4j 注解即可然后就可以在本类的任意位置直接显式调用 log 对象不需要再自行创建非常方便。import com.markerhub.entity.User; import lombok.extern.slf4j.Slf4j; import java.time.LocalDateTime; Slf4j public class MyClass { public static void main(String[] args) { // 用法一单个参数 logger 日志打印 String message abcde; log.info(这是 Slf4j 注解的 log 对象打出的日志打印单个参数{}, message); // 用法二多个参数 logger 日志打印 int number 100; String message2 abcdefg; long time 1000000000000000000L; log.info(这是 Slf4j 注解的 log 对象打出的日志打印多个参数{},{},{}, number, message2, time); // 用法三对象参数 logger 日志打印 User user1 new User(); user1.setUsername(zhangsna); user1.setPassword(123456); user1.setCreated(LocalDateTime.now()); user1.setEmail(123456qq.com); user1.setStatus(1); log.info(这是 Slf4j 注解的 log 对象打出的日志打印对象参数{}, user1); log.debug(debug 日志); log.error(error 日志); } }运行程序如下图和上面的 logger 对象效果是完全一样的。1.3使用 Spring 的 Log 接口使用频率较低如下代码所示Spring 自身提供了Log接口也可以创建日志对象。import com.markerhub.entity.User; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.time.LocalDateTime; public class MyClass { private static final Log logger LogFactory.getLog(MyClass.class); public static void main(String[] args) { // 用法一单个参数 logger 日志打印 String message abcde; logger.info(这是 Slf4j 注解的 log 对象打出的日志打印单个参数{},message); // 用法二多个参数 logger 日志打印 int number 100; String message2 abcdefg; long time 1000000000000000000L; logger.info(这是 Slf4j 注解的 log 对象打出的日志打印多个参数{},{},{}, number, message2, time); // 用法三对象参数 logger 日志打印 User user1 new User(); user1.setUsername(zhangsna); user1.setPassword(123456); user1.setCreated(LocalDateTime.now()); user1.setEmail(123456qq.com); user1.setStatus(1); logger.info(这是 Slf4j 注解的 log 对象打出的日志打印对象参数{}, user1); logger.debug(debug 日志); logger.error(error 日志); } }但是 Spring 提供的 logger 对象无法像前两种一样输出参数值这一点其实是不太友好的不过 Spring 提供的这种日志输出方式基本也没人使用同学们作为了解即可主要还是前两种用的比较多。二. 常见的 Loggerloggerlog是有什么关系吗1Logger 是SLF4J提供的日志接口用于创建日志对象如LoggerFactory.getLogger()。需要手动实例化。2log 是通过Slf4j注解生成的变量名本质还是一个Logger实例。3logger 没有特殊含义只是采用SLF4J提供的日志接口创建对象时常常见对象命名为 logger 而已。三. 日志的级别和推荐级别如以下表格所示日志的详细程度由高到低。一般情况下日志输出的详细越耗费系统性能所以不建议将日志输出特别详细适中即可大部分都是选择 INFO 级别也推荐大家尽量选择 INFO 或 DEBUG。级别严重性适用场景生产环境建议开发环境建议TRACE最低详细追踪程序执行流程关闭按需开启DEBUG低调试代码逻辑和变量状态关闭开启INFO中监控应用运行状态和关键操作开启开启WARN较高潜在问题不影响程序运行开启开启ERROR高功能错误需人工干预开启开启FATAL最高致命错误程序无法继续运行开启开启日志级别的设置基本在配置文件中设置的方式如下# 设置全局日志级别 logging.level.rootinfo # 设置特定包的日志级别 logging.level.com.example.myappdebug # 自定义日志输出格式和文件路径 logging.pattern.console%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n logging.file.nameapp.log
RELATED

相关推荐

告别黑苹果配置烦恼:OpCore Simplify一键EFI生成终极指南

告别黑苹果配置烦恼:OpCore Simplify一键EFI生成终极指南

告别黑苹果配置烦恼:OpCore Simplify一键EFI生成终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置感到头疼…

📅 2026/8/20 20:36:11
HASH索引,AVL树,B树,B+树的区别?

HASH索引,AVL树,B树,B+树的区别?

目录 一. 什么是 Hash 1.1 Hash 函数 1.2 Hash 碰撞 1.3 HashMap 的时间复杂度 二. AVL树 2.1 简单了解AVL树 2.2 AVL树的时间复杂度 2.3 AVL树的缺点 三. B 树 四. B 树 五. 为什么数据库不采用哈希表存储数据呢? 六. 为什么数据库不采取B树的结构存储…

📅 2026/8/20 20:36:11
Axure RP中文语言包终极指南:5分钟实现界面完全汉化

Axure RP中文语言包终极指南:5分钟实现界面完全汉化

Axure RP中文语言包终极指南:5分钟实现界面完全汉化 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的…

📅 2026/9/12 12:51:37
MORE NEWS

更多资讯

📰

3 步部署高性能 LLM 推理服务:TensorRT-LLM 内核优化实战指南

3 步部署高性能 LLM 推理服务:TensorRT-LLM 内核优化实战指南 【免费下载链接】TensorRT-LLM TensorRT LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and supports state-of-the-art optimizations to perform infer…

📰

32GB显存微调7B模型实战:从OOM到QLoRA全量复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

BI工具选型六大核心能力实战验证指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

ECS自建数据库与托管RDS选型对比:等保三级合规视角

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

SpringBoot社区智能服务平台设计与优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

iOS上架工具实测:Xcode、Transporter、Appuploader怎么选

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬