當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot_日志-SpringBoot默认配
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot_日志-SpringBoot默认配
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
咱們說了springboot做日志管理的依賴原理,用logback的方式進行實現(xiàn),那怎么用呢
大家測試一下,我們打開之前創(chuàng)建的工程,現(xiàn)在不做任何配置的情況下,我就直接來運行這段代碼,我們看到控制臺其實已經(jīng)有日志輸出了,所以我們說,springboot默認已經(jīng)幫我們配置好日志了,我們直接使用就行了,那怎么用呢,我就用測試類,如果我們想要記錄一些東西,別用system.out了,system.out太簡陋了,我們來用日志,日志我們首先是面對slf4j編程的,有一個LoggerFactory,它是slf4j旗下的,有一個方法getLogger,Logger就是記錄器,他要傳一個class,那我就直接getClass,把這個類的class傳過去,Logger logger = LoggerFactory.getLogger(getClass());會給我們返回一個Logger,稱之為記錄器,我們就拿這個記錄器記錄日志,怎么記錄呢,一個叫l(wèi)ogger.trace,trace叫做跟蹤軌跡的意思,如果框架在運行過程中,跟蹤一些信息,比用system.out了,然后還有一個logger.debug,debug這是調(diào)試,輸出一些調(diào)試信息,還有一個常用的是logger.info,這就是我們自己定義的一些信息,還有一個logger.warn,這相當(dāng)于是警告,比如返回值如果不是預(yù)期的,日志記錄一下,還有l(wèi)ogger.error,這是錯誤,如果你try catch要捕獲異常,而它也出這個異常了,咱們的這個日志記錄一下,這是我們常用的這幾個東西,而我們這些東西,叫日志的級別,日志級別由低到高,就是我們這幾個trace<debug<info<warn<error我們要日志級別有什么用,這個日志框架的一大好處,可以調(diào)整日志輸出的級別,比如我們的這個項目上線了,debug信息和info信息我不想要,我只想要警告和錯誤,我們只想讓她打印警告和錯誤,如果是以前我們要把它注掉,我們可以調(diào)整日志級別,他只會打印這個級別及以后的內(nèi)容,日志就只會在這個級別及以后的高級別生效,比如我們來舉一個例子,我們記錄了一些信息,我們發(fā)現(xiàn)只輸出了info,warn,error,相當(dāng)于trace和debug沒有輸出,springboot默認給我們默認的是info級別的,所以只會輸出info級別及以后的內(nèi)容,我們springboot,也就是我這個類在輸出的時候呢,我只能輸出這幾個級別,那我能不能調(diào)整啊,也可以調(diào)整,怎么調(diào)整呢,所有的日志調(diào)整,我們都在配置文件里面,我們可以寫一個logging
package com.learn.springboot;import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;import com.learn.bean.Person;/*** SpringBoot單元測試** 可以在測試期間很方便的類似編碼一樣進行自動注入等容器的功能*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigurationTests {@AutowiredPerson person;@AutowiredApplicationContext ioc;@Testpublic void testHelloService() {boolean b = ioc.containsBean("helloService02");System.out.println(b);}Logger logger = LoggerFactory.getLogger(getClass());@Testpublic void contextLoads() {
// System.out.println(person);// 日志的級別// 由低到高 trace<debug<info<warn<error// 可以調(diào)整輸出的日志級別;日志就只會在這個級別以后的高級別生效logger.trace("這是trace日志......");logger.debug("這是debug日志......");// SpringBoot默認給我們使用的是info級別的logger.info("這是info日志........");logger.warn("這是warn日志........");logger.error("這是error日志......");}
}
有一個level叫級別,level它是一個map,他寫的就是你每一個包,或者你每一個類,你日志輸出用什么級別,比如我們只調(diào)com.learn,把com.learn,learn類里面的級別我都調(diào)成trace級別logging.level.com.learn=trace我調(diào)成這個級別,trace以后就都能夠輸出了,是不是這樣呢,其實沒調(diào)還是給默認的info,我們這些就輸出全了
#debug=true
#server.port=8081#server.context-path=/boot02spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=truelogging.level.com.learn=trace
沒有制定級別的,就是用SpringBoot默認規(guī)定的級別,如果是知道這個日志框架,這就叫root級別的,把root規(guī)定成了info,然后設(shè)置了的用我們的,沒設(shè)置的,用root,然后這是我們這幾個級別,以后我們開發(fā)就用它來做日志記錄,通過都可以在application里面看到,我們還有一個logging.path,和logging.file,logging.path和logging.file如果都不指定的情況下,我們?nèi)罩局粫诳刂婆_輸出,如果我們用logging.file指定了日志的文件名,把日志輸出到指定的文件
我們先不寫logging.path看一下,我來指定一個文件名,我們就叫springboot.loglogging.file=springboot.log我來運行一下,我們來看這個日志,日志在這有記錄,沒問題,當(dāng)前項目下就有springboot.log,當(dāng)前項目下生成springboot.log日志,我不想在當(dāng)前項目下,那我能不能在哪個盤指定呢,蔽日我要他在d盤,logging.file=D:/springboot.log現(xiàn)在我們啟動起來,在d盤看一下,這兒也有,也指定上路徑,不指定路徑在當(dāng)前項目下生成,我們可以指定完整的路徑,就在我們指定的路徑下,生成我們這個文件,這是logging.file,還有一個呢,叫l(wèi)ogging.path,這path一聽就是路徑,這指定路徑還有什么用呢,logging.file和logging.path其實是沖突設(shè)置,你指定logging.file不指定logging.path,file起作用了,如果你指定了logging.file和logging.path,還是logging.file起作用,我們一般是來指定logging.path,path是我們來指定目錄,我要指定一個你要生成的日志目錄,日志文件用springboot默認的,比如我們指定一個目錄叫l(wèi)ogging.path=/spring/log這是什么意思啊,/在linux下是絕對路徑,在當(dāng)前磁盤的根路徑,創(chuàng)建spring文件夾,和里面的log文件夾,然后使用日志文件叫什么,使用spring.log作為默認文件,這是spring規(guī)定的,所以我來試一下,然后日志幫我們記錄下來,所以我們在這可以指定路徑,當(dāng)然也可以指定更多的東西,如有一個logging.parttern.console,這console就是我們在控制臺,在控制臺輸出的日志格式,那么還有一個你能指定,logging.pattern.file,指定文件中日志輸出的格式,我們默認這個格式是什么樣的呢,這一塊我們叫做時間,日志級別logging.parttern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n控制臺%d就是日期,現(xiàn)在還是帶上時分秒的,我現(xiàn)在不要時分秒了,然后加上線程號,加上我們這個級別,-5就是靠左對齊,logger就是全類名50個字符,然后帶上消息,%n換行,這是在控制臺輸出的,如果是在文件里面呢logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n多給他中間加上==號,每一個每一個之間加上等等號,%thread就是我們的線程,線程用中括號括起來,我們看一下是不是按照我們指定的格式走了呢,然后控制臺輸出的時候就沒有時分秒了,然后我們來看我們的文件,我們現(xiàn)在就回按照我們規(guī)定的格式來了,這也是我們也能規(guī)定格式,那么格式代表是什么意思
#debug=true
#server.port=8081#server.context-path=/boot02spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=truelogging.level.com.learn=trace
#logging.file=D:/springboot.log
logging.file=springboot.log
#logging.path=/spring/log
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n
?
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的SpringBoot_日志-SpringBoot默认配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot_日志-Spring
- 下一篇: SpringBoot_日志-指定日志文件