圖文詳解SpringBoot中Log日志的集成
一、日志的分類
1、名字分類
- log4j :log for java (因為for和4讀音差不多,所以交log4j)
- logBack 日志說明
注意:springBoot默認集成了logback日志
2、日志分類
根日志:全局日志 rootLogger( springboot的日志級別:info)
子日志:包日志 logger
3、日志級別
OFF=》ERROR=》 WARNING=》INFO(springboot默認)=》DEBUG(mybatis默認級別)=》ALL級別越高輸出信息越少
日志級別由低到高: 日志級別越高輸出的日志信息越少
日志級別 | 使用場景 |
---|---|
DEBUG | debug級別用來記錄詳細的信息,方便定位問題進行調(diào)試,在生產(chǎn)環(huán)境我們一般不開啟DEBUG |
INFO | 用來記錄關(guān)鍵代碼點的信息,以便代碼是否按照我們預(yù)期的執(zhí)行,生產(chǎn)環(huán)境通常會設(shè)置INFO級別 |
WARNING | 記錄某些不預(yù)期發(fā)生的情況,如磁盤不足 |
ERROR | 由于一個更嚴重的問題導(dǎo)致某些功能不能正常運行時記錄的信息 |
CRITICAL | 當發(fā)生嚴重錯誤,導(dǎo)致應(yīng)用程序不能繼續(xù)運行時記錄的信息 |
二、logback簡介
Logback是由log4j創(chuàng)始人設(shè)計的又一個開源日志組件。目前,logback分為三個模塊:
logback-core,logback-classic和logback-access
。是對log4j日志展示進一步改進
1、 項目中日志分類
日志分為兩類
一種是rootLogger : 用來監(jiān)聽項目中所有的運行日志 包括引入依賴jar中的日志
一種是logger : 用來監(jiān)聽項目中指定包中的日志信息
2、 java項目中使用
(1) logback配置文件
logback的配置文件必須放在項目根目錄中 且名字必須為logback.xml
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <!--定義項目中日志輸出位置--> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!--定義項目的日志輸出格式--> <!--定義項目的日志輸出格式--> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> [%p] %d{yyyy-MM-dd HH:mm:ss} %m %n</pattern> </layout> </appender> <!--項目中跟日志控制--> <root level="INFO"> <appender-ref ref="stdout"/> </root> <!--項目中指定包日志控制--> <logger name="com.baizhi.dao" level="DEBUG"/> </configuration>
(2)具體類中使用日志
@Controller @RequestMapping("user") public class UserController { private Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass()); @RequestMapping("findAll") public String findAll(String name) { logger.debug("debug接收的姓名是: "+name); logger.info("info接收的姓名是: "+name); logger.warn("warn接收的姓名是: "+name); logger.error("error接收的姓名是: "+name); return "index"; } }
(3)使用默認日志配置
logging: level: root: debug com.baizhi.dao: debug path: /Users/whj/aa.log file: bbb.log
三、SpringBoot中日志使用
1、將Springboot的日志默認級別改為debug
#開啟日志 如果級別:off(少)>error>warn>info>debug(多)>all logging: level: root: debug com.tjcu.controller: debug com.tjcu.dao: debug
注意:因為springboot如果使用debug作為日志打印的東西太多了,所以改用info為默認日志級別,但是mybatis等使用的是debug作為默認日志級別,所以我們需要兼顧他的日志隔離級別
2、SpringBoot項目啟動就會有一個默認的日志對象:logger
先配置 com.tjcu.controller: debug
#開啟日志 logging: level: root: debug com.tjcu.controller: debug
controller里面使用日志對象
@Controller @CrossOrigin @ResponseBody public class EmpController { //在控制層定義日志對象 private static final Logger log = LoggerFactory.getLogger(EmpController.class); @Autowired private EmpService empService; @RequestMapping("/emp/queryAll") public List<Emp> queryall(){ List<Emp> emps = empService.showEmp(); for (Emp emp : emps) { log.debug(String.valueOf(emp)); } return emps; }
前端訪問后
http://localhost:8080/ems/emp/queryAll
控制臺結(jié)果
四、idea中使用日志插件簡化開發(fā)
1、下載Log Support2插件
2、重啟idea
3、Settings里面會新增一個Log Support目錄
FrameWork框架選擇slf4j
我們?yōu)槭裁匆褂胹lf4j
我們自己的系統(tǒng)中使用了logback這個日志系統(tǒng)
我們的系統(tǒng)使用了A.jar,A.jar中使用的日志系統(tǒng)為log4j
我們的系統(tǒng)又使用了B.jar,B.jar中使用的日志系統(tǒng)為slf4j-simple
這樣,我們的系統(tǒng)就不得不同時支持并維護logback、log4j、slf4j-simple三種日志框架,非常不便。
slf4j只是一個日志標準,并不是日志系統(tǒng)的具體實現(xiàn) 。理解這句話非常重要,slf4j只做兩件事情:
- 提供日志接口
- 提供獲取具體日志對象的方法
4、如果直接使用Android的日志會沖突
5、測試
logd+enter(回車)后idea自動幫我們添加private static final Logger log1 = LoggerFactory.getLogger(EmpController.class);
其中d代表debug,i代表info,w代表warn
@Controller @CrossOrigin @ResponseBody public class EmpController { private static final Logger log= LoggerFactory.getLogger(EmpController.class); @Autowired private EmpService empService; @RequestMapping("/emp/queryAll") public List<Emp> queryall(){ List<Emp> emps = empService.showEmp(); for (Emp emp : emps) { log.debug(""); log.info(""); log.warn(""); } return emps; }
6、使用占位的方式書寫日志而不用+號拼接
{}代表占位,一個{}代表占位一個
@Controller @CrossOrigin @ResponseBody public class EmpController { private static final Logger log= LoggerFactory.getLogger(EmpController.class); @Autowired private EmpService empService; @RequestMapping("/emp/queryAll") public List<Emp> queryall(){ List<Emp> emps = empService.showEmp(); for (Emp emp : emps) { log.info("員工的信息 {} {}",emp,"這是占位"); } return emps; }
總結(jié)
到此這篇關(guān)于SpringBoot中Log日志集成的文章就介紹到這了,更多相關(guān)SpringBoot中Log日志集成內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis中注入執(zhí)行sql查詢、更新、新增及建表語句案例代碼
這篇文章主要介紹了Mybatis中注入執(zhí)行sql查詢、更新、新增以及建表語句,主要說明一個另類的操作,注入sql,并使用mybatis執(zhí)行,結(jié)合案例代碼詳解講解,需要的朋友可以參考下2023-02-02Java中的CompletionService批量異步執(zhí)行詳解
這篇文章主要介紹了Java中的CompletionService批量異步執(zhí)行詳解,我們知道線程池可以執(zhí)行異步任務(wù),同時可以通過返回值Future獲取返回值,所以異步任務(wù)大多數(shù)采用ThreadPoolExecutor+Future,需要的朋友可以參考下2023-12-12Java 使用JdbcTemplate 中的queryForList發(fā)生錯誤解決辦法
這篇文章主要介紹了Java 使用JdbcTemplate 中的queryForList發(fā)生錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-07-07Java下載遠程服務(wù)器文件到本地(基于http協(xié)議和ssh2協(xié)議)
這篇文章主要介紹了Java下載遠程服務(wù)器文件到本地的方法(基于http協(xié)議和ssh2協(xié)議),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01dockerfile-maven-plugin極簡教程(推薦)
這篇文章主要介紹了dockerfile-maven-plugin極簡教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10妙用Java8中的Function接口消滅if...else
在開發(fā)過程中經(jīng)常會使用if...else...進行判斷拋出異常、分支處理等操作。這些if...else...充斥在代碼中嚴重影響了代碼代碼的美觀,本文就妙用Java8中的Function接口消滅if...else,感興趣的可以了解一下2022-01-01