日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

SpringBoot 日志文件:日志的作用?為什么要寫日志?

作者:愛吃大白菜   更新時間: 2023-07-04 編程語言

文章目錄

  • ??前言
  • 1.日志長什么樣子?
  • 2.自定義打印日志
    • 2.1 在程序中得到日志對象
    • 2.2 使用日志對象打印日志
  • 3.日志級別
    • 3.1 日志級別的分類與使用
    • 3.2 日志級別有什么用呢?
    • 3.3 日志級別的設置
  • 4.日志持久化保存
  • 5.更方便的日志輸出
    • 5.1 添加 lombok 框架
    • 5.2 使用注釋輸出日志
  • ??總結

在這里插入圖片描述

??前言

日志、日志,日志就是記錄發生了什么。為啥要記錄發生了什么呢?想象?下,如果程序報錯了,不讓你打開控制臺看?志,那么你能找到報錯的原因嗎?因此我們需要記錄程序的行為,通過這些行為能讓我們更好的發現和定位錯誤所在位置。

除了發現和定位問題之外,還可以通過?志實現以下功能:

  • 記錄?戶登錄?志,?便分析?戶是正常登錄還是惡意破解?戶。
  • 記錄系統的操作?志,?便數據恢復和定位操作?。
  • 記錄程序的執?時間,?便為以后優化程序提供數據?持。

可以看出來日志在程序中扮演這非常重要的角色了。

1.日志長什么樣子?

SpringBoot 項目啟動的時候默認就會有日志輸出,如下圖:
在這里插入圖片描述

通過上述日志信息提出三個疑問:

  1. Spring Boot 如何打印日志?(提前把這個說了:它內置了日志框架,因此可以打印日志)
  2. 默認情況下,輸出的日志并非是開發者定義和打印的,開發者怎么在程序中?定義打印?志呢?
  3. 日志默認打印在控制臺上,而控制臺的日志不能保存,如何將日志永久保存呢?

接下來讓我們尋找找答案

2.自定義打印日志

自定義打印日志分為兩步走:

  • 在程序中得到日志對象
  • 使用日志對象的相關語法輸出打印內容

2.1 在程序中得到日志對象

//1.得到日志對象
private final static Logger logger = LoggerFactory.getLogger(TestController.class);

在導包時,我們使用的時slf4j包下面的 Logger,這里不要導包導錯了。
在這里插入圖片描述
因為 SpringBoot 中內置了日志框架slf4j,所以我們可以直接在程序中調用slf4來輸出日志。

2.2 使用日志對象打印日志

// 2.使??志打印?志
logger.info("--------------要輸出?志的內容----------------");

日志打印結果:
在這里插入圖片描述
這日志打印出來看起來像是一串字符串,我們如何去看出來日志打印的是什么東西呢?看下圖的介紹:
在這里插入圖片描述

日志之間有很多等級劃分,我們通常把他分為六個等級。

3.日志級別

3.1 日志級別的分類與使用

日志級別一覽表(由上到下等級遞增):

等級 解釋
trace 微量,少許的意思,級別最低的日志
debug 需要調試時候的打印關鍵信息
info 普通打印信息,也是默認日志級別
warn 警告,這個級別的日志不影響使用,但需要注意問題
error 錯誤信息,級別較高的錯誤日志信息
fatal 致命的,因為代碼異常導致程序退出執行的事件

3.2 日志級別有什么用呢?

  1. 日志級別可以幫你篩選出重要的信息,?如設置?志級別為 error,那么就可以只看程序的報錯?志了,對于普通的調試?志和業務?志就可以忽略了,從而節省開發者信息篩選的時間。
  2. 日志級別可以控制,不同環境下打印日志的要求可以設置(一般分為開發環境和生產環境),?個程序是否需要打印?志,如開發環境我們需要很詳細的信息,??產環境為了保證性能和安全性就會輸出盡量少的日志。

第一條也許比較難理解,我們寫代碼演示一下,我們知道日志等級默認的是info級別的,我們打印如下日志:

@Controller
@ResponseBody
public class TestController {
    
    private final static Logger logger = LoggerFactory.getLogger(TestController.class);
    
    @RequestMapping("/sayHi")
    public String sayHi(String name) {

            logger.trace("----------- 我是 trace 級別的日志 -----------");
            logger.debug("----------- 我是 debug 級別的日志 -----------");
            logger.info("----------- 我是 info 級別的日志 -----------");
            logger.warn("----------- 我是 warn 級別的日志 -----------");
            logger.error("----------- 我是 error 級別的日志 -----------");
        if(!StringUtils.hasLength(name)) {
            name ="張三";
        }
        String res = "你好" + name;
        return  res;

    }

觀察控制臺:
在這里插入圖片描述
你會新奇的發現,比info級別小的日志,沒有出現在控制臺,也就是沒有打印,這就是第一條說的, 日志級別可以幫你篩選出重要的信息。

3.3 日志級別的設置

這個日志級別怎么有用,我們應該如何設置日志級別呢?答案是在配置文件(yaml文件或者properties文件)中設置,我們這里使用yaml文件。
打印大于error級別的日志,如下圖,:

logging:
  level:
    root: error

設置完等級,我們再次啟動項目,看看是否符合我們的預期,看下圖,它符合我們的預期,只打印了 error級別的日志。
在這里插入圖片描述

4.日志持久化保存

上方舉得例子都是打印在控制臺上的,然而在生產環境上需要將日志持久化保存下來,以便追溯問題位置。

想要將日志進行持久化保存,只需要在配置文件中指定日志的存儲目錄或者指定日志保存文件名之后,SpringBoot 就會將控制臺的日志寫到我們配置的目錄或文件中去。

配置文件的保存路徑:

# 設置日志文件的目錄
logging:
  file:
    path: F:\\info\\

我們再次啟動項目,打開設置好的路徑,看看是否有日志保存:
打開后可以看到有日志保存,證明我們的設置是正確的。
在這里插入圖片描述

5.更方便的日志輸出

每次打印日志,我們都是使用 LoggerFactory.getLogger(×××.class)這樣的操作,代碼顯得冗余,我們可以使用更簡單好用的日志輸出方法,使用 lombok 來更簡單的輸出。
其步驟大概分為兩步:

  1. 添加 lombok 框架支持
  2. 使用 @Slf4j 注解輸出日志

5.1 添加 lombok 框架

這個框架提供了非常多的簡便注解,可以減少代碼冗余,如果有需要可以去了解一下!

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

5.2 使用注釋輸出日志

我們在類上方添加@Slf4j注釋,在使用時我們就會得到一個對象log對象。代碼如下:

@Controller
@ResponseBody
@Slf4j
public class TestController {
    @RequestMapping("/sayHi")
    public String sayHi(String name) {

            log.trace("----------- 我是 trace 級別的日志 -----------");
            log.debug("----------- 我是 debug 級別的日志 -----------");
            log.info("----------- 我是 info 級別的日志 -----------");
            log.warn("----------- 我是 warn 級別的日志 -----------");
            log.error("----------- 我是 error 級別的日志 -----------");
        if(!StringUtils.hasLength(name)) {
            name ="張三";
        }
        String res = "你好" + name;
        return  res;

    }
}

??總結

  1. 日志時程序中的重要組成部分,使用日志可以快速的發現和定位問題。
  2. 在配置文件中設置日志時,設置的等級越高,收到的日志信息也就越少。
  3. SpringBoot 內置了日志框架,默認情況下使用的是 info 日志級別打印在控制臺上,我們可以通過配置文件將日志持久化。
  4. 在手搓日志中,代碼有冗余,我們可以使用 lombok 提供的 @Slf4j 注解和 log對象 快速的打印自定義日志。

原文鏈接:https://blog.csdn.net/qq_65228171/article/details/131486824

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新