【SpringBoot】讲清楚日志文件&&lombok

简介: 【SpringBoot】讲清楚日志文件&&lombok

前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、日志是什么?

?志是程序的重要组成部分,想象?下,如果程序报错了,不让你打开控制台看?志,那么你能找到报错的原因吗?

答案是否定的,写程序不是买彩票,不能完全靠猜,因此?志对于我们来说,最主要的?途就是排除和定位问题。

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

1.记录?户登录?志,?便分析?户是正常登录还是恶意破解?户。

2.记录系统的操作?志,?便数据恢复和定位操作?。

3.记录程序的执?时间,?便为以后优化程序提供数据?持。

4.以上这些都是?志提供的?常实?的功能

二、?志怎么??

Spring Boot 项?在启动的时候默认就有?志输出,如下图所示

这个就是我们说的日志,说明日志在springboot里是内置好的,那么我们应该怎么怎么自定义打印日志呢

三.自定义打印日志

3.1在程序中得到日志对象

在程序中获取?志对象需要使??志?? LoggerFactory,如下代码所示

代码如下(示例):

// 1.得到?志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class
);

?志??需要将每个类的类型传递进去,这样我们才知道?志的归属类,才能更?便、更直观的定位到问题类

3.2使用日志打印对象

?志对象的打印?法有很多种,我们可以先使? info() ?法来输出?志,如下代码所示

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LogController {

    // 1.得到日志对象
    private static Logger log =
            LoggerFactory.getLogger(TestController.class);

    @RequestMapping("/log")
    public void log() {
        String msg = "今天已经周二了。";
        log.trace("trace -> " + msg);
        log.debug("debug -> " + msg);
        log.info("info -> " + msg);
        log.warn("warn -> " + msg);
        log.error("error -> " + msg);
    }

}

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

//@Controller
//@ResponseBody
@RestController
@PropertySource(value = "classpath:application.properties",
        encoding = "utf-8")
public class TestController {

    @Value("${myimage.path}")
    private String myImage;

    @RequestMapping("/sayhi")
    public String sayHi() {
        System.out.println(LocalDateTime.now() +" 日志 " +
                "com.example.demo.controller.TestController");
        return "你好,Spring Boot -> " + myImage;
    }
}


四.?志级别

4.1日志级别有什么用

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

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

4.2 ?志级别的分类与使?

?志的级别分为:

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

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

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

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

error:错误信息,级别较?的错误?志信息;

fatal:致命的,因为代码异常导致程序退出执?的事件;

五.日志持久化

可以和我这样子配置

是在application.yml里写的,记得要俩个斜扛,一个是转义的

六.lombok

6.1添加lobok依赖

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

注意:使? @Slf4j 注解,在程序中使? log 对象即可输??志,并且只能使? log 对象才能输出,

这是 lombok 提供的对象名

6.2lombok原理

lombok 能够打印?志的密码就在 target ?录??,target 为项?最终执?的代码,查看 target ?录,如下

6.3lombok 更多注解说明

注解 作?

@Getter ?动添加 getter ?法

@Setter ?动添加 setter ?法

@ToString ?动添加 toString ?法

@EqualsAndHashCode ?动添加 equals 和 hashCode ?法

@NoArgsConstructor ?动添加?参构造?法

@AllArgsConstructor ?动添加全属性构造?法,顺序按照属性的定义顺序

@NonNull 属性不能为 null

@RequiredArgsConstructor ?动添加必需属性的构造?法,

final +@NonNull 的属性为必需

注解 作?

@Data @Getter + @Setter + @ToString +

@EqualsAndHashCode +

@RequiredArgsConstructor +

@NoArgsConstructor

?志注解

@Slf4j 添加?个名为 log 的?志,使? slf4j

总结

今天的博客,希望大佬们能在评论指出错误!~~??

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1天前
|
弹性计算 应用服务中间件 Shell
切割 Nginx 日志文件
【4月更文挑战第28天】
23 0
|
1天前
|
Oracle 关系型数据库
|
1天前
|
安全 JavaScript Java
springboot实现文件防盗链设计
`shigen`,一位专注于Java、Python、Vue和Shell的博主,分享成长和技术。近期将探讨SpringBoot实现图片防盗链,通过限制`Referer`防止资源被盗用。基础版通过`WebMvcConfigurer`配置静态资源,升级版添加拦截器检查`Referer`,确保请求来源合法性。详细代码实现和案例可在文中链接找到。一起学习,每天进步!
46 13
springboot实现文件防盗链设计
|
1天前
|
Go 文件存储 iOS开发
LabVIEW崩溃后所产生的错误日志文件的位置
LabVIEW崩溃后所产生的错误日志文件的位置
10 0
|
1天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
1天前
|
弹性计算 运维 Shell
自动日志文件轮转
【4月更文挑战第30天】
8 0
|
1天前
|
弹性计算 应用服务中间件 Shell
切割Nginx 日志文件
【4月更文挑战第29天】
22 1
|
1天前
|
存储 弹性计算 运维
统计/var/log 有多少个文件
【4月更文挑战第29天】
23 1
|
1天前
|
弹性计算 运维 Shell
|
1天前
|
弹性计算 运维 Shell
清理日志文件
【4月更文挑战第29天】
16 1
http://www.vxiaotou.com