您好,登錄后才能下訂單哦!
這篇文章主要介紹SpringBoot中Log日志集成的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
log4j :log for java (因?yàn)閒or和4讀音差不多,所以交log4j)
logBack 日志說(shuō)明
注意:springBoot默認(rèn)集成了logback日志
根日志:全局日志 rootLogger( springboot的日志級(jí)別:info)
子日志:包日志 logger
OFF=》ERROR=》 WARNING=》INFO(springboot默認(rèn))=》DEBUG(mybatis默認(rèn)級(jí)別)=》ALL級(jí)別越高輸出信息越少
日志級(jí)別由低到高: 日志級(jí)別越高輸出的日志信息越少
日志級(jí)別 | 使用場(chǎng)景 |
---|---|
DEBUG | debug級(jí)別用來(lái)記錄詳細(xì)的信息,方便定位問(wèn)題進(jìn)行調(diào)試,在生產(chǎn)環(huán)境我們一般不開(kāi)啟DEBUG |
INFO | 用來(lái)記錄關(guān)鍵代碼點(diǎn)的信息,以便代碼是否按照我們預(yù)期的執(zhí)行,生產(chǎn)環(huán)境通常會(huì)設(shè)置INFO級(jí)別 |
WARNING | 記錄某些不預(yù)期發(fā)生的情況,如磁盤不足 |
ERROR | 由于一個(gè)更嚴(yán)重的問(wèn)題導(dǎo)致某些功能不能正常運(yùn)行時(shí)記錄的信息 |
CRITICAL | 當(dāng)發(fā)生嚴(yán)重錯(cuò)誤,導(dǎo)致應(yīng)用程序不能繼續(xù)運(yùn)行時(shí)記錄的信息 |
Logback是由log4j創(chuàng)始人設(shè)計(jì)的又一個(gè)開(kāi)源日志組件。目前,logback分為三個(gè)模塊:
logback-core,logback-classic和logback-access
。是對(duì)log4j日志展示進(jìn)一步改進(jìn)
日志分為兩類
一種是rootLogger : 用來(lái)監(jiān)聽(tīng)項(xiàng)目中所有的運(yùn)行日志 包括引入依賴jar中的日志
一種是logger : 用來(lái)監(jiān)聽(tīng)項(xiàng)目中指定包中的日志信息
(1) logback配置文件
logback的配置文件必須放在項(xiàng)目根目錄中 且名字必須為logback.xml
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <!--定義項(xiàng)目中日志輸出位置--> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!--定義項(xiàng)目的日志輸出格式--> <!--定義項(xiàng)目的日志輸出格式--> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> [%p] %d{yyyy-MM-dd HH:mm:ss} %m %n</pattern> </layout> </appender> <!--項(xiàng)目中跟日志控制--> <root level="INFO"> <appender-ref ref="stdout"/> </root> <!--項(xiàng)目中指定包日志控制--> <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)使用默認(rèn)日志配置
logging: level: root: debug com.baizhi.dao: debug path: /Users/whj/aa.log file: bbb.log
#開(kāi)啟日志 如果級(jí)別:off(少)>error>warn>info>debug(多)>all logging: level: root: debug com.tjcu.controller: debug com.tjcu.dao: debug
注意:因?yàn)閟pringboot如果使用debug作為日志打印的東西太多了,所以改用info為默認(rèn)日志級(jí)別,但是mybatis等使用的是debug作為默認(rèn)日志級(jí)別,所以我們需要兼顧他的日志隔離級(jí)別
先配置 com.tjcu.controller: debug
#開(kāi)啟日志 logging: level: root: debug com.tjcu.controller: debug
controller里面使用日志對(duì)象
@Controller @CrossOrigin @ResponseBody public class EmpController { //在控制層定義日志對(duì)象 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; }
前端訪問(wèn)后
http://localhost:8080/ems/emp/queryAll
控制臺(tái)結(jié)果
FrameWork框架選擇slf4j
我們?yōu)槭裁匆褂胹lf4j
我們自己的系統(tǒng)中使用了logback這個(gè)日志系統(tǒng)
我們的系統(tǒng)使用了A.jar,A.jar中使用的日志系統(tǒng)為log4j
我們的系統(tǒng)又使用了B.jar,B.jar中使用的日志系統(tǒng)為slf4j-simple
這樣,我們的系統(tǒng)就不得不同時(shí)支持并維護(hù)logback、log4j、slf4j-simple三種日志框架,非常不便。
slf4j只是一個(gè)日志標(biāo)準(zhǔn),并不是日志系統(tǒng)的具體實(shí)現(xiàn) 。理解這句話非常重要,slf4j只做兩件事情:
提供日志接口
提供獲取具體日志對(duì)象的方法
logd+enter(回車)后idea自動(dòng)幫我們添加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; }
{}代表占位,一個(gè){}代表占位一個(gè)
@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; }
以上是“SpringBoot中Log日志集成的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。