SpringBoot 日志文件从入门到实战

这篇具有很好参考价值的文章主要介绍了SpringBoot 日志文件从入门到实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 日志的作用

日志是程序的重要组成部分 , 虽然不是必须的 , 但如果不打开控制台查看日志 , 将很难排查错误.

除了发现和定位问题之外 , 我们还可以通过日志实现以下功能:

  • 记录用户登录日志 , 方便分析用户是正常登录还是恶意破解用户.
  • 记录系统的操作日志 , 方便恢复数据和定位操作人.
  • 记录程序的执行时间 , 方便以后优化程序提供数据支持.

日志真实使用案例:

  • 应用程序日志记录:开发人员在应用程序中添加日志记录功能,以便在应用程序运行时跟踪和调试问题。例如,当应用程序出现错误时,开发人员可以查看日志文件以了解错误的原因。
  • 安全日志记录:安全管理员可以使用安全日志记录来跟踪系统中的安全事件。例如,当系统出现入侵尝试时,安全管理员可以查看日志文件以了解入侵者的行为和尝试的目的。
  • 网络日志记录:网络管理员可以使用网络日志记录来跟踪网络活动。例如,当网络出现故障时,网络管理员可以查看日志文件以了解故障的原因。
  • 应用程序性能分析:开发人员可以使用日志记录来分析应用程序的性能。例如,他们可以记录应用程序中的每个操作的执行时间,并使用这些信息来查找性能瓶颈。
  • 运维日志记录:运维人员可以使用日志记录来跟踪系统的运行状况。例如,当系统出现故障时,运维人员可以查看日志文件以了解故障的原因,并采取适当的措施来解决问题。

2. 日志怎么用

Spring Boot 框架中内置了日志框架 , 因此我们每次在项目启动的时候就能看到日志输出.

SpringBoot 日志文件从入门到实战

通过上述日志信息可以得出三个问题:

  • Spring Boot 内置的日志框架是什么?
  • 开发中如何在项目中自定义打印日志?
  • 日志输出默认是在控制台的 , 如何将日志永久的保存起来?

3. 自定义日志打印

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

  1. 在程序中得到日志对象.
  2. 使用日志对象的相关语法输出要打印的内容.

3.1 程序中得到日志对象

每个类都有自己专属的日志 , 期望这个日志是唯一的不被他人修改 final

private static final Logger log = LoggerFactory.getLogger();

Tips: 一定要选择 slf4j 中的 Logger.

Spring 内置日志框架为 SLF4Jlogback , 可以在 Maven 的内置扩展中查看.

SpringBoot 日志文件从入门到实战

其中:

  • SLF4J 是一个 Java 日志 API,它提供了一个抽象层,使得应用程序可以在不改变代码的情况下使用不同的日志实现。(类似于房屋中介)

  • Logback 是一个开源的 Java 日志框架 , 可以满足各种应用程序的日志需求。

SLF4J 的实现原理就是 门面模式 , 门面模式与代理模式非常相似 , 用户发送的日志请求 , 首先会来到SLF4J , 之后SLF4J 会自动匹配适合的日志框架 , 这样的设计方式会大大增强代码的灵活性和可移植性 , 程序员可以通过 SLF4J 的抽象层 , 轻松切换日志框架.

SpringBoot 日志文件从入门到实战

3.2 使用日志对象打印日志

 @RequestMapping("/sayHi") // = @WebServlet("/url")
    public String sayHi(){
//        System.out.println("打印日志");
        log.trace("i'm trace");//所有的痕迹都打印
        log.debug("i'm debug");
        log.info("i'm info");
        log.warn("i'm warn");
        log.error("i'm error");
        return "Hello world!" + "->" + myconfigration;
    }

执行结果如下:

我们发现没有看到 trace 和 debug 日志. 这是因为 info 为日志的默认级别 , 因此只输出 >= info 的日志.

SpringBoot 日志文件从入门到实战

3.3 日志格式说明

SpringBoot 日志文件从入门到实战


4. 日志级别

4.1 日志级别的作用

  • 日志级别可以帮你筛选出重要的信息 , 比如设置日志的级别为 ERROR, 开发中只查看程序的报错信息 , 可以节省开发者筛选信息的时间.
  • 调试和故障排查:在开发和测试阶段,可以将日志级别设置为DEBUG或TRACE,记录应用程序的详细运行信息,以便在出现问题时进行调试和故障排查。
  • 监控和性能分析:在生产环境中,可以将日志级别设置为INFO或WARN,记录应用程序的重要事件和异常情况,以便进行监控和性能分析。
  • 安全审计和合规性检查:在安全审计和合规性检查中,可以将日志级别设置为ERROR或FATAL,记录应用程序的安全事件和故障情况,以便进行安全审计和合规性检查。
  • 日志管理和存储:根据不同的日志级别进行日志管理和存储,将不同级别的日志存储到不同的日志文件中,以便进行日志管理和分析。

综上所述,日志级别的作用主要是在应用程序中记录日志时,根据不同的重要程度将日志分为不同级别,以便在不同场景下对日志进行筛选和过滤,从而实现调试和故障排查、监控和性能分析、安全审计和合规性检查等功能。

4.2 日志级别的分类与使用

日志的级别分为:

  • TRACE:最详细的日志级别,用于记录应用程序的详细运行信息,包括方法调用、变量值等。
  • DEBUG:用于调试应用程序,记录应用程序的调试信息,包括变量值、方法调用等。
  • INFO:记录应用程序的重要事件和状态信息,例如应用程序启动、关闭、配置信息等。
  • WARN:记录应用程序的警告信息,例如应用程序出现异常但不影响正常运行的情况。
  • ERROR:记录应用程序的错误信息,例如应用程序出现异常并影响了正常运行的情况。
  • FATAL:记录应用程序的严重错误信息,例如应用程序崩溃或无法继续运行的情况。

不同的日志级别对应不同的日志内容,包含的信息也不同。通常,可以根据应用程序的需要选择合适的日志级别进行记录,以便在不同场景下对日志进行筛选和过滤,从而实现调试和故障排查、监控和性能分析、安全审计和合规性检查等功能。

SpringBoot 日志文件从入门到实战

级别越高能收到的消息就越少 , 如果把日志级别设为 warn , 那么就只能收掉 warn , error 和 fatal 的信息.

4.3 日志级别的设置

日志级别的设置只需在配置文件中设置"logging.level"配置项即可.

配置根路径级别的日志:

#  日志级别设置
# 所有项目设置为 error
logging:
	level:
		root: error
@RestController // = @Controller + @ResponseBody
public class testController {
    //1.得到日志对象
    private static final Logger log = LoggerFactory.getLogger(testController.class);
    //注册一个路由
    @RequestMapping("/sayHi") // = @WebServlet("/url")
    public String sayHi(){
        //System.out.println("打印日志");
        log.trace("i'm trace");
        log.debug("i'm debug");
        log.info("i'm info");
        log.warn("i'm warn");
        log.error("i'm error");
        return "Hello world!" + "->" ;
    }
}

结果显示:

明显只打印 error 及 error 以上的日志信息.

SpringBoot 日志文件从入门到实战

Tips: 如果不设置日志输出级别 , 默认为 info

4.4 综合练习

将所有项目的日志级别设置为 error , 而 controller 类中设置为 trace

logging:
	level:
		root: error
		com:
			example:
				demo:
					controller: trace

5. 日志的持久化

以上日志都是输出在控制台上 , 然而生产环境中需要我们把日志保存起来 , 以便后续回溯定位问题 , 将日志保存起来的过程就叫做持久化.

5.1 配置日志文件的保存路径:

Tips: 路径一定要写绝对路径

logging:
	file:
		path: D:\\java\\

5.2 配置日志文件的文件名:

系统会自动在指定路径下创建一个 spring_log 文件 , 里面存储 日志文件.

logging:
	file:
		path: D:\\java\\spring_log

SpringBoot 日志文件从入门到实战

5.3 综合练习:

将 controller 包下 error 级别以上的⽇志保存到 log_all.log 下,将 service包 下 warn 级别以上的⽇志保存到 log_all.log 下

logging:
  level:
    com:
      example:
        demo:
          controller: error
          service: warn
  file:
    path: D:\\java\\log_all.log

5.4 不同批次的日志是覆盖还是追加?

观察得出结论 , 日志文件一旦产生 , 那么日志文件及其内容就会永久的保存 , 不会出现文件或内容的丢失 , 所以不同批次的日志是追加.


6. 更简单的日志输出

每次写日志时 , 都要写下面代码 , 当业务过于复杂就会很麻烦:

private static final Logger log = LoggerFactory.getLogger(testController.class);

因此我们可使用 lombok 框架

lombok 是一个编译期的框架 , 在编译期 , lombok 的注解处理器会自动扫描 Java 源代码 , 并根据注解生成 Java 代码 , 最终与源代码合并 , 生成 Java 类文件. 生成的 Java 类文件可以像原 Java 文件一样被 编译 , 打包 , 部署.

SpringBoot 日志文件从入门到实战文章来源地址https://www.toymoban.com/news/detail-449120.html

@RestController
@Slf4j //给当前的类添加一个叫 log 的日志对象
public class LogController {
    @RequestMapping("/log")
    public String log(){
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");
        return "log sayhi";
    }
}



到了这里,关于SpringBoot 日志文件从入门到实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s webhook实例,java springboot程序实现 对Pod创建请求添加边车容器 ,模拟istio实现日志文件清理

    大纲 背景与原理 实现流程 开发部署my-docker-demo-sp-user服务模拟业务项目 开发部署my-sidecar服务模拟边车程序 开发部署服务my-docker-demo-k8s-operator 提供webhook功能 创建MutatingWebhookConfiguration 动态准入配置 测试边车注入效果 背景: 原理: 涉及项目 my-docker-demo-sp-user 模拟业务项目

    2024年02月15日
    浏览(38)
  • SpringBoot——配置文件的作用

    之前我们介绍了有关于SpringBoot文件结构的resources文件夹下面的两个子文件夹的作用,也就是在我们访问页面的时候使用方式静态资源的地方,那么在这个文件夹下面还有一个文件叫做application.properties, 这个文件就是项目的配置文件。 还记得之前我们在一开始看到这个文件结

    2024年02月04日
    浏览(40)
  • 深入理解 SpringBoot 日志框架:从入门到高级应用——(七)SpringBoot日志配置

    SpringBoot 官方文档:https://docs.spring.io/spring-boot/docs/2.7.12/reference/htmlsingle Spring Boot 对所有内部日志记录使用 Commons Logging,但使底层日志实现保持为打开状态。 为 Java Util Logging、Log4J2 和 Logback 提供了默认配置。默认情况下,Logback、 Java Util Logging、Commons Logging、Log4J 或 SLF4J 都能

    2024年02月09日
    浏览(31)
  • 6.3 SpringBoot日志进阶实战 Logback配置详解

    在上一篇文章中,我和你介绍了SpringBoot快速入门Slf4j + Logback实战,遗留的问题是如何将日志输出到文件。 今天这篇文章分享了我在SpringBoot中使用Logback配置日志的经验和方法,并提供了详细的代码示例和解释,包括: 滚动文件、异步日志记录、动态指定属性、日志级别、配

    2024年02月07日
    浏览(52)
  • 实战:ELK环境部署并采集springboot项目日志

    相信作为一个资深的搬砖人,在处理问题的时候免不了查看应用系统日志,且可以根据这个日志日志精准、快速的解决实际的问题。一般情况下我们的系统日志都放置在包的运行目录下面,非常不便于查看和分类。那么。今天我们就引入ELK的日志处理架构来解决它。 ELK组成及

    2024年02月17日
    浏览(40)
  • SpringBoot实现文件记录日志,日志文件自动归档和压缩

    😊 @ 作者: Eric 💖 @ 主页: https://blog.csdn.net/weixin_47316183?type=blog 🎉 @ 主题: SpringBoot实现文件记录日志,日志文件自动归档和压缩 ⏱️ @ 创作时间: 2023年08月06日 Logback 是一个Java日志框架,它是 log4j 的后继者,被广泛用于应用程序中记录日志。 Logger(日志记录器): L

    2024年02月14日
    浏览(34)
  • springBoot 配置文件 jpa 相关参数的作用

    在Spring Boot应用中,可以通过配置文件来配置JPA(Java Persistence API)相关的参数。下面是一些常用的JPA配置参数及其作用: spring.jpa.database : 指定JPA使用的数据库类型,默认为自动检测。可选值有 HSQL 、 H2 、 DERBY 、 MYSQL 、 POSTGRESQL 、 ORACLE 、 SQLSERVER 等。 spring.jpa.show-sql : 是否

    2024年02月12日
    浏览(42)
  • 深入理解 SpringBoot 日志框架:从入门到高级应用——(一)日志框架原理

    日志框架的历史可以追溯到计算机编程的早期。在早期的编程语言中,如 C 和 Pascal,程序员通常使用 printf 或 fprintf 函数将程序的状态信息输出到控制台或文件中,以便调试和排查问题。 随着计算机应用程序的不断发展,人们对日志管理的需求越来越高。当我们在开发项目时

    2024年02月09日
    浏览(53)
  • SpringBoot(项目创建使用+配置文件+日志文件)

    目录 1. Spring Boot 项目创建 2. 写一个 Hello World 并运行 3. 配置文件的作用及格式 4. properties 配置文件的基本语法  5. 读取配置文件 6. yml 配置文件说明 7. properties 和 yml 的区别 8. SpringBoot 日志文件 8.1 日志的作用 8.2 自定义日志打印 8.3 日志的级别 8.4 日志持久化 8.5 更简单的实现

    2024年01月22日
    浏览(56)
  • SpringBoot 日志文件

    日志是程序的重要组成部分,最常见的,当程序报错时,打开控制台就能看到报错信息,这些就是日志.通过日志,可以看到错误信息,找到错误原因 除了发现和定位问题,日志还能实现这些实用的功能: 记录用户登录日志,分析用户是正常登录还是恶意破解用户(用来分析用户的行为) 记

    2024年02月03日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包