成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Boot日志框架實踐

inapt / 1836人閱讀

摘要:概述應(yīng)用中,日志一般分為以下個級別錯誤信息警告信息一般信息調(diào)試信息跟蹤信息使用的作為內(nèi)部的日志框架,其僅僅是一個日志接口,在實際應(yīng)用中需要為該接口來指定相應(yīng)的日志實現(xiàn)。默認的日志實現(xiàn)是,是自帶的日志包,此外當(dāng)然也支持這類很流行的日志實現(xiàn)。

概述

Java應(yīng)用中,日志一般分為以下5個級別:

ERROR 錯誤信息

WARN 警告信息

INFO 一般信息

DEBUG 調(diào)試信息

TRACE 跟蹤信息

Spring Boot使用Apache的Commons Logging作為內(nèi)部的日志框架,其僅僅是一個日志接口,在實際應(yīng)用中需要為該接口來指定相應(yīng)的日志實現(xiàn)。

SpringBt默認的日志實現(xiàn)是Java Util Logging,是JDK自帶的日志包,此外SpringBt當(dāng)然也支持Log4J、Logback這類很流行的日志實現(xiàn)。

統(tǒng)一將上面這些日志實現(xiàn)統(tǒng)稱為日志框架

下面我們來實踐一下!

注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按掃描 下面的 小心心 來訂閱 ↓ ↓ ↓

使用Spring Boot Logging插件

首先application.properties文件中加配置:

logging.level.root=INFO

控制器部分代碼如下:

package com.hansonwang99.controller;

import com.hansonwang99.K8sresctrlApplication;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/testlogging")
public class LoggingTestController {
    private static Logger logger = LoggerFactory.getLogger(K8sresctrlApplication.class);
    @GetMapping("/hello")
    public String hello() {
        logger.info("test logging...");
        return "hello";
    }
}

運行結(jié)果

由于將日志等級設(shè)置為INFO,因此包含INFO及以上級別的日志信息都會打印出來

這里可以看出,很多大部分的INFO日志均來自于SpringBt框架本身,如果我們想屏蔽它們,可以將日志級別統(tǒng)一先全部設(shè)置為ERROR,這樣框架自身的INFO信息不會被打印。然后再將應(yīng)用中特定的包設(shè)置為DEBUG級別的日志,這樣就可以只看到所關(guān)心的包中的DEBUG及以上級別的日志了。

控制特定包的日志級別

application.yml中改配置

logging:
  level:
    root: error
    com.hansonwang99.controller: debug

很明顯,將root日志級別設(shè)置為ERROR,然后再將com.hansonwang99.controller包的日志級別設(shè)為DEBUG,此即:即先禁止所有再允許個別的 設(shè)置方法

控制器代碼

package com.hansonwang99.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/testlogging")
public class LoggingTestController {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @GetMapping("/hello")
    public String hello() {
        logger.info("test logging...");
        return "hello";
    }
}

運行結(jié)果

可見框架自身的INFO級別日志全部藏匿,而指定包中的日志按級別順利地打印出來

將日志輸出到某個文件中

logging:
  level:
    root: error
    com.hansonwang99.controller: debug
  file: ${user.home}/logs/hello.log

運行結(jié)果

使用Spring Boot Logging,我們發(fā)現(xiàn)雖然日志已輸出到文件中,但控制臺中依然會打印一份,發(fā)現(xiàn)用org.slf4j.Logger是無法解決這個問題的

集成Log4J日志框架

pom.xml中添加依賴

       
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        
        
            org.springframework.boot
            spring-boot-starter-log4j2
        

在resources目錄下添加log4j2.xml文件,內(nèi)容如下:




    
        
            
        
    

    

        
            
        
        
    

其他代碼都保持不變

運行程序發(fā)現(xiàn)控制臺沒有日志輸出,而hello2.log文件中有內(nèi)容,這符合我們的預(yù)期:

而且日志格式和pattern="%d{HH:mm:ss,SSS} %p %c (%L) - %m%n"格式中定義的相匹配

Log4J更進一步實踐

pom.xml配置:

        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        

        
            org.springframework.boot
            spring-boot-starter-log4j2
        

log4j2.xml配置



    

        springboot-web
        logs/${app_name}

    
    
        
            
        

        
            
                
                
            
            
            
                
                
                
                
            
            
            
        

        
            
                
                
            
            
            
                
                
                
                
            
            
            
        

        
            
            
            
                
                
                
                
            
            
            
        

    

    


        
            
            
            
            
        

    

控制器代碼:

package com.hansonwang99.controller;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/testlogging")
public class LoggingTestController {
    private final Logger logger = LogManager.getLogger(this.getClass());
    @GetMapping("/hello")
    public String hello() {
        for(int i=0;i<10_0000;i++){
            logger.info("info execute index method");
            logger.warn("warn execute index method");
            logger.error("error execute index method");
        }
        return "My First SpringBoot Application";
    }
}

運行結(jié)果

日志會根據(jù)不同的級別存儲在不同的文件,當(dāng)日志文件大小超過2M以后會分多個文件壓縮存儲,生產(chǎn)環(huán)境的日志文件大小建議調(diào)整為20-50MB。

后記

作者更多的原創(chuàng)文章在此,歡迎觀賞

My Personal Blog

作者更多的SpringBt實踐文章在此:

Spring Boot應(yīng)用監(jiān)控實戰(zhàn)

SpringBoot應(yīng)用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的實踐

初探Kotlin+SpringBoot聯(lián)合編程

Spring Boot日志框架實踐

SpringBoot優(yōu)雅編碼之:Lombok加持

如果有興趣,也可以抽點時間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:

利用K8S技術(shù)棧打造個人私有云 連載文章

從一份配置清單詳解Nginx服務(wù)器配置

Docker容器可視化監(jiān)控中心搭建

利用ELK搭建Docker容器化應(yīng)用日志中心

RPC框架實踐之:Apache Thrift

RPC框架實踐之:Google gRPC

微服務(wù)調(diào)用鏈追蹤中心搭建

Docker容器跨主機通信

Docker Swarm集群初探

高效編寫Dockerfile的幾條準(zhǔn)則

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71051.html

相關(guān)文章

  • [直播視頻] 《Java 微服務(wù)實踐 - Spring Boot 系列》限時折扣

    摘要:作為微服務(wù)的基礎(chǔ)設(shè)施之一,背靠強大的生態(tài)社區(qū),支撐技術(shù)體系。微服務(wù)實踐為系列講座,專題直播節(jié),時長高達小時,包括目前最流行技術(shù),深入源碼分析,授人以漁的方式,幫助初學(xué)者深入淺出地掌握,為高階從業(yè)人員拋磚引玉。 簡介 目前業(yè)界最流行的微服務(wù)架構(gòu)正在或者已被各種規(guī)模的互聯(lián)網(wǎng)公司廣泛接受和認可,業(yè)已成為互聯(lián)網(wǎng)開發(fā)人員必備技術(shù)。無論是互聯(lián)網(wǎng)、云計算還是大數(shù)據(jù),Java平臺已成為全棧的生態(tài)體系,...

    Enlightenment 評論0 收藏0
  • Spring Boot Admin 2.0開箱體驗

    摘要:概述在我之前的應(yīng)用監(jiān)控實戰(zhàn)一文中,講述了如何利用版本來可視化地監(jiān)控應(yīng)用。接下來我們就來創(chuàng)建一個待監(jiān)控的示例。 showImg(https://segmentfault.com/img/remote/1460000015671446); 概述 在我之前的 《Spring Boot應(yīng)用監(jiān)控實戰(zhàn)》 一文中,講述了如何利用 Spring Boot Admin 1.5.X 版本來可視化地監(jiān)控 ...

    CastlePeaK 評論0 收藏0
  • Spring Boot應(yīng)用監(jiān)控實戰(zhàn)

    摘要:概述之前講過容器的可視化監(jiān)控,即監(jiān)控容器的運行情況,包括使用率內(nèi)存占用網(wǎng)絡(luò)狀況以及磁盤空間等等一系列信息。實戰(zhàn)一下中添加依賴啟動應(yīng)用程序之后,只要在瀏覽器中輸入端點信息就能獲得應(yīng)用的一些狀態(tài)信息。 showImg(https://segmentfault.com/img/remote/1460000014684947); 概述 之前講過Docker容器的可視化監(jiān)控,即監(jiān)控容器的運行情...

    mtunique 評論0 收藏0
  • Spring Boot 最流行的 16 條實踐解讀!

    摘要:來源是最流行的用于開發(fā)微服務(wù)的框架。以下依次列出了最佳實踐,排名不分先后。這非常有助于避免可怕的地獄。推薦使用構(gòu)造函數(shù)注入這一條實踐來自的項目負責(zé)人。保持業(yè)務(wù)邏輯免受代碼侵入的一種方法是使用構(gòu)造函數(shù)注入。 showImg(https://mmbiz.qpic.cn/mmbiz_jpg/R3InYSAIZkHQ40ly9Oztiart2lESCyjCH0JwFRp3oErlYobhibM...

    Ethan815 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<