国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了SpringBoot 日志文件:日志的作用?為什么要寫日志?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


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

??前言

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

除了發(fā)現(xiàn)和定位問題之外,還可以通過?志實現(xiàn)以下功能:

  • 記錄?戶登錄?志,?便分析?戶是正常登錄還是惡意破解?戶。
  • 記錄系統(tǒng)的操作?志,?便數(shù)據(jù)恢復(fù)和定位操作?。
  • 記錄程序的執(zhí)?時間,?便為以后優(yōu)化程序提供數(shù)據(jù)?持。

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

1.日志長什么樣子?

SpringBoot 項目啟動的時候默認(rèn)就會有日志輸出,如下圖:
SpringBoot 日志文件:日志的作用?為什么要寫日志?

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

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

接下來讓我們尋找找答案

2.自定義打印日志

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

  • 在程序中得到日志對象
  • 使用日志對象的相關(guān)語法輸出打印內(nèi)容

2.1 在程序中得到日志對象

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

在導(dǎo)包時,我們使用的時slf4j包下面的 Logger,這里不要導(dǎo)包導(dǎo)錯了。
SpringBoot 日志文件:日志的作用?為什么要寫日志?
因為 SpringBoot 中內(nèi)置了日志框架slf4j,所以我們可以直接在程序中調(diào)用slf4來輸出日志。

2.2 使用日志對象打印日志

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

日志打印結(jié)果:
SpringBoot 日志文件:日志的作用?為什么要寫日志?
這日志打印出來看起來像是一串字符串,我們?nèi)绾稳タ闯鰜砣罩敬蛴〉氖鞘裁礀|西呢?看下圖的介紹:
SpringBoot 日志文件:日志的作用?為什么要寫日志?

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

3.日志級別

3.1 日志級別的分類與使用

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

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

3.2 日志級別有什么用呢?

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

第一條也許比較難理解,我們寫代碼演示一下,我們知道日志等級默認(rèn)的是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;

    }

觀察控制臺:
SpringBoot 日志文件:日志的作用?為什么要寫日志?
你會新奇的發(fā)現(xiàn),比info級別小的日志,沒有出現(xiàn)在控制臺,也就是沒有打印,這就是第一條說的, 日志級別可以幫你篩選出重要的信息。

3.3 日志級別的設(shè)置

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

logging:
  level:
    root: error

設(shè)置完等級,我們再次啟動項目,看看是否符合我們的預(yù)期,看下圖,它符合我們的預(yù)期,只打印了 error級別的日志。
SpringBoot 日志文件:日志的作用?為什么要寫日志?

4.日志持久化保存

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

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

配置文件的保存路徑:

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

我們再次啟動項目,打開設(shè)置好的路徑,看看是否有日志保存:
打開后可以看到有日志保存,證明我們的設(shè)置是正確的。
SpringBoot 日志文件:日志的作用?為什么要寫日志?

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對象。代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-513300.html

@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;

    }
}

??總結(jié)

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

到了這里,關(guān)于SpringBoot 日志文件:日志的作用?為什么要寫日志?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 為什么要寫測試用例,測試用例寫給誰看?

    為什么要寫測試用例,測試用例寫給誰看?

    “為什么要編寫測試用例,測試用例寫給誰看”,這個問題看似簡單,但卻涵蓋了一系列復(fù)雜的考慮因素,并不太好回答。 為了向各位學(xué)測試的同學(xué)們解釋清楚“為什么編寫測試用例是至關(guān)重要的”,我將通過以下5個方面進(jìn)行展開: 1、為什么要寫測試用例? 2、測試用例寫

    2024年02月05日
    瀏覽(14)
  • 我為什么要寫《百圖解碼支付系統(tǒng)設(shè)計與實現(xiàn)》專欄(附專欄大綱)

    致謝 @月朦朧 提出的“狀態(tài)機領(lǐng)域模型同時被兩個線程操作怎么避免狀態(tài)冪等問題” @趙曉軍528 @康文彬 指出了狀態(tài)機文章中有關(guān)鍵代碼缺失 @用戶4725518259032 指出了需要缺失hashCode()的問題。 很多其他網(wǎng)友也給了很多有益反饋,無法一一感謝。 本周更新 分布式流控系列文章。

    2024年01月16日
    瀏覽(48)
  • 為什么SQL日志文件很大,該如何處理?

    為什么SQL日志文件很大,該如何處理?

    SQL Server 日志文件是記錄所有數(shù)據(jù)庫事務(wù)和修改的事務(wù)日志文件。用 SQL 術(shù)語來說,此日志文件記錄對數(shù)據(jù)庫執(zhí)行的所有 INSERT 、 UPDATE 和 DELETE查詢操作。 如果數(shù)據(jù)庫聯(lián)機或恢復(fù)時日志已滿,SQL Server 通常會發(fā)出 9002 錯誤。在這種情況下,數(shù)據(jù)庫只能讀取而不能更新。此篇文章

    2024年02月06日
    瀏覽(33)
  • java的springboot框架中使用logback日志框架使用RabbitHandler注解為什么獲取不到消費的traceId信息?

    當(dāng)使用 Logback 日志框架和 RabbitMQ 的 @RabbitHandler 注解時,如果無法獲取消費的 traceId 信息,可能是因為在處理 RabbitMQ 消息時,沒有正確地將 traceId 傳遞到日志中。 為了將 traceId 傳遞到日志中,你可以利用 MDC(Mapped Diagnostic Context)機制。MDC 是一個線程綁定的上下文容器,允許

    2024年02月09日
    瀏覽(33)
  • 【Linux操作系統(tǒng)】編譯過程中遇到的問題-為什么加-c?執(zhí)行文件提示無法執(zhí)行二進(jìn)制文件?main函數(shù)參數(shù)argc和*argv[]的作用和理解?

    【Linux操作系統(tǒng)】編譯過程中遇到的問題-為什么加-c?執(zhí)行文件提示無法執(zhí)行二進(jìn)制文件?main函數(shù)參數(shù)argc和*argv[]的作用和理解?

    在使用GCC編譯器進(jìn)行程序開發(fā)時,我們經(jīng)常會遇到一些編譯過程中的問題, 比如為什么要加上\\\"-c\\\"選項,以及為什么生成的可執(zhí)行文件無法執(zhí)行等問題。 本篇博客將詳細(xì)介紹這些問題,并給出相應(yīng)的代碼和解釋,幫助讀者更好地理解GCC編譯過程中的\\\"-c\\\"選項和main函數(shù)的參數(shù)a

    2024年02月12日
    瀏覽(31)
  • 為什么要做黑盒測試?黑盒測試有什么作用?

    為什么要做黑盒測試?黑盒測試有什么作用?

    對于軟件測試的從業(yè)者來說,黑盒測試是十分重要的測試方式,它可以彌補白盒測試檢查不到的部分??赡軇倓?cè)腴T的測試小白,對于為什么要做黑盒測試?黑盒測試有什么作用?仍然抱有很大的疑問。下面小編就來從黑盒測試的概念、作用和優(yōu)點,帶領(lǐng)大家全面認(rèn)識黑盒測

    2024年02月05日
    瀏覽(26)
  • web中為什么要引入service層以及前端控制器DispatchServlet的作用以及原理剖析

    review: 最初的做法是: 一個請求對應(yīng)一個Servlet,這樣存在的問題是servlet太多了 把一些列的請求都對應(yīng)一個Servlet, IndexServlet/AddServlet/EditServlet/DelServlet/UpdateServlet - 合并成FruitServlet 通過一個operate的值來決定調(diào)用FruitServlet中的哪一個方法 使用的是switch-case 在上一個版本中,Ser

    2024年02月04日
    瀏覽(21)
  • 為什么TM服務(wù)器要安裝php~
現(xiàn)在服務(wù)器都用什么php環(huán)境,服務(wù)器安裝php環(huán)境的作用是什么?

    為什么TM服務(wù)器要安裝php~ 現(xiàn)在服務(wù)器都用什么php環(huán)境,服務(wù)器安裝php環(huán)境的作用是什么?

    \\\"想像力比知識更重要。因為知識是有限的,而想像力是無限,它包含了一切,推動著進(jìn)步,是人類進(jìn)化的源泉。 -- 愛因斯坦 為什么服務(wù)器要安裝php~ 導(dǎo)讀:今天來給各位分享關(guān)于服務(wù)器為什么安裝PHP的相關(guān)內(nèi)容,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開

    2024年02月16日
    瀏覽(25)
  • (一)springboot實戰(zhàn)——為什么是springboot?

    (一)springboot實戰(zhàn)——為什么是springboot?

    為什么是springboot?江湖夜雨,傳說依舊,不懂springboot一技之長,如何混跡java圈,本節(jié)內(nèi)容我們介紹一下spring的一些基本特性。尤其是springboot3的基本特性,使得我們更好的理解springboot3。 springboot的特點 -可以快速的創(chuàng)建一個獨立的spring項目,取代老式的SSM項目 - 直接嵌入T

    2024年02月09日
    瀏覽(25)
  • 有了Spring為什么還需要SpringBoot呢

    有了Spring為什么還需要SpringBoot呢

    目錄 一、Spring缺點分析 二、什么是Spring Boot 三、Spring Boot的核心功能 3.1 起步依賴 3.2 自動裝配 1. 配置文件和依賴太多了?。?! spring是一個非常優(yōu)秀的輕量級框架,以IOC(控制反轉(zhuǎn))和AOP(面向切面)為思想內(nèi)核,極大簡化了JAVA企業(yè)級項目的開發(fā)。雖然Spring的組件代碼是輕

    2024年02月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包