亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

feign?打印日志不顯示的問題及解決

 更新時間:2022年06月28日 11:05:16   作者:球場一枝花  
這篇文章主要介紹了feign?打印日志不顯示的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

feign打印日志不顯示

1.是否有設(shè)置 feign 的 Logger.Level

@Configuration
public class FeignClientConfig {
?? ?@Bean
?? ?Logger.Level feignLogLevel() {
?? ??? ?return Logger.Level.FULL;
?? ?}
}

2.查看是否有在 yml 或者 properties 文件中有設(shè)置 level

logging:
? level:
? ? cn.itcast.order: debug

3.如果上面兩項設(shè)置后還沒有正確日志輸出,那么請確定你是否開啟了 log4j ,如果使用了,請在 logback.xml 文件中檢查是否添加了一下內(nèi)容

<!-- 這里是你得 feign 包-->
<logger name="com.business.gateway.iao" level="DEBUG" additivity="false">
?? ?<appender-ref ref="STDOUT"/>
</logger>

如果還沒有效果,那么恭喜你,中獎了,只能通過 log4j 底層源碼去 debug 了。一般前3步做完 日志都會正確出現(xiàn),最后請大家一定要去看官方文檔。

feign基本使用

在開發(fā) Spring Cloud 微服務(wù)的時候,我們知道,服務(wù)之間都是以 HTTP 接口的形式對外提供服務(wù)的,因此消費者在進行調(diào)用的時候,底層就是通過 HTTP Client 的這種方式進行訪問。

當(dāng)然我們可以使用JDK原生的 URLConnection、Apache 的 HTTP Client、Netty 異步 Http Client,Spring 的 RestTemplate 去實現(xiàn)服務(wù)間的調(diào)用。

但是最方便、最優(yōu)雅的方式是通過 Spring Cloud Open Feign 進行服務(wù)間的調(diào)用 Spring Cloud 對 Feign 進行了增強,使 Feign 支持 Spring Mvc 的注解,并整合了 Ribbon 等,從而讓 Feign 的使用更加方便。

Feign 概述

什么是 Feign

Feign 是一個聲明式的 Web Service 客戶端。它的出現(xiàn)使開發(fā) Web Service 客戶端變得很簡單。使用 Feign 只需要創(chuàng)建一個接口加上對應(yīng)的注解,比如:@FeignClient 注解。 Feign 有可插拔的注解,包括 Feign 注解和 AX-RS 注解。Feign 也支持編碼器和解碼器,Spring Cloud Open Feign 對 Feign 進行增強支持 Spring Mvc 注解,可以像 Spring Web 一樣使用 HttpMessageConverters 等。

Feign 是一種聲明式、模板化的 HTTP 客戶端。在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 請求訪問遠(yuǎn)程服務(wù),就像調(diào)用本地方法一樣的,開發(fā)者完全感知不到這是在調(diào)用遠(yuǎn)程方法,更感知不到在訪問 HTTP 請求。接下來介紹一下 Feign 的特性,具體如下:

  • 可插拔的注解支持,包括 Feign 注解和AX-RS注解。
  • 支持可插拔的 HTTP 編碼器和解碼器。
  • 支持 Hystrix 和它的 Fallback。
  • 支持 Ribbon 的負(fù)載均衡。
  • 支持 HTTP 請求和響應(yīng)的壓縮。Feign 是一個聲明式的 WebService 客戶端,它的目的就是讓 Web Service 調(diào)用更加簡單。它整合了 Ribbon 和 Hystrix,從而不需要開發(fā)者針對 Feign 對其進行整合。Feign 還提供了 HTTP 請求的模板,通過編寫簡單的接口和注解,就可以定義好 HTTP 請求的參數(shù)、格式、地址等信息。Feign 會完全代理 HTTP 的請求,在使用過程中我們只需要依賴注入 Bean,然后調(diào)用對應(yīng)的方法傳遞參數(shù)即可。

Feign 入門案例

此處以調(diào)用 Github API 查詢服務(wù)為例。

引入依賴

<dependency>
? ? <groupId>org.springframework.cloud</groupId>
? ? <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

啟動類加入如下注解:

/** 開啟 Feign 掃描支持 */
@EnableFeignClients?

Feign 接口編寫

/**
?* @Author:大漠知秋
?* @Description:使用 Feign 訪問 Github 查詢 API
?* @CreateDate:2:36 PM 2018/10/24
?*/
@FeignClient(name = "github-client", url = "https://api.github.com")
public interface GitHubFeign {

????@RequestMapping(
????????????value = "/search/repositories",
????????????method = RequestMethod.GET,
????????????produces = MediaType.APPLICATION_JSON_UTF8_VALUE
????)
????String searchRepo(@RequestParam("q") String q);
}

Controller

/**
?* @Author:大漠知秋
?* @Description:使用 Feign 訪問 Github 查詢 API
?* @CreateDate:2:42 PM 2018/10/24
?*/
@RestController
@RequestMapping(
? ? ? ? value = "/github",
? ? ? ? produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
public class GitHubController {

? ? @Resource
? ? private GitHubFeign gitHubFeign;

? ? @RequestMapping(
? ? ? ? ? ? value = "/search/repositories",
? ? ? ? ? ? method = RequestMethod.GET
? ? )
? ? String searchRepo(@RequestParam("q") String q) {
? ? ? ? return gitHubFeign.searchRepo(q);
? ? }
}

結(jié)果

Feign 工作原理

在開發(fā)微服務(wù)應(yīng)用時,我們會在主程序入口添加 @EnableFeignClients 注解開啟對 Feign Client 掃描加載處理。根據(jù) Feign Client 的開發(fā)規(guī)范,定義接口并加 @FeignClients 注解。

當(dāng)程序啟動時,會進行包掃描,掃描所有 @FeignClients 的注解的類,并將這些信息注入 Spring IOC 容器中。當(dāng)定義的 Feign 接口中的方法被調(diào)用時,通過JDK的代理的方式,來生成具體的 RequestTemplate。當(dāng)生成代理時,F(xiàn)eign 會為每個接口方法創(chuàng)建一個 RequetTemplate 對象,該對象封裝了 HTTP 請求需要的全部信息,如請求參數(shù)名、請求方法等信息都是在這個過程中確定的。

然后由 RequestTemplate 生成 Request,然后把 Request 交給 Client 去處理,這里指的 Client 可以是 JDK 原生的 URLConnection、Apache 的 Http Client 也可以是 Okhttp。最后 Client 被封裝到 LoadBalanceclient 類,這個類結(jié)合 Ribbon 負(fù)載均衡發(fā)起服務(wù)之間的調(diào)用。

@FeignClient 注解

  • name:指定 Feign Client 的名稱,如果項目使用了 Ribbon,name 屬性會作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)。
  • url:url 一般用于調(diào)試,可以手動指定 @FeignClient 調(diào)用的地址。
  • decode404:當(dāng)發(fā)生404錯誤時,如果該字段為 true,會調(diào)用 decoder 進行解碼,否則拋出 FeignException。
  • configuration:Feign 配置類,可以自定義 Feign 的 Encoder、Decoder、LogLevel、Contract。
  • fallback:定義容錯的處理類,當(dāng)調(diào)用遠(yuǎn)程接口失敗或超時時,會調(diào)用對應(yīng)接口的容錯邏輯,fallback 指定的類必須實現(xiàn) @FeignClient 標(biāo)記的接口。
  • fallbackFactory:工廠類,用于生成 fallback 類示例,通過這個屬性我們可以實現(xiàn)每個接口通用的容錯邏輯,減少重復(fù)的代碼。
  • path:定義當(dāng)前 FeignClient 的統(tǒng)一前綴。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java自定義動態(tài)鏈接數(shù)據(jù)庫示例

    java自定義動態(tài)鏈接數(shù)據(jù)庫示例

    這篇文章主要介紹了java自定義動態(tài)鏈接數(shù)據(jù)庫示例,需要的朋友可以參考下
    2014-02-02
  • Java數(shù)組常見應(yīng)用詳解【創(chuàng)建、遍歷、排序、查找】

    Java數(shù)組常見應(yīng)用詳解【創(chuàng)建、遍歷、排序、查找】

    這篇文章主要介紹了Java數(shù)組常見應(yīng)用,結(jié)合實例形式詳細(xì)分析了java數(shù)組的基本定義、創(chuàng)建、遍歷、排序、查找等相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2020-02-02
  • 詳解Java線程池如何實現(xiàn)優(yōu)雅退出

    詳解Java線程池如何實現(xiàn)優(yōu)雅退出

    這篇文章我們將從源碼角度深度解析線程池是如何優(yōu)雅的退出程序的,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)java線程池有一定幫助,需要的可以參考一下
    2022-07-07
  • idea切換分支的時候,忽略一些無用的修改設(shè)置

    idea切換分支的時候,忽略一些無用的修改設(shè)置

    這篇文章主要介紹了idea切換分支的時候,忽略一些無用的修改操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • springboot?html調(diào)用js無效400問題及解決

    springboot?html調(diào)用js無效400問題及解決

    這篇文章主要介紹了springboot?html調(diào)用js無效400的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 尋找二叉樹最遠(yuǎn)的葉子結(jié)點(實例講解)

    尋找二叉樹最遠(yuǎn)的葉子結(jié)點(實例講解)

    下面小編就為大家分享一篇尋找二叉樹最遠(yuǎn)的葉子結(jié)點的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • spring cloud consul注冊的服務(wù)報錯critical的解決

    spring cloud consul注冊的服務(wù)報錯critical的解決

    這篇文章主要介紹了spring cloud consul注冊的服務(wù)報錯critical的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • SpringBoot中的FailureAnalyzer使用詳解

    SpringBoot中的FailureAnalyzer使用詳解

    這篇文章主要介紹了SpringBoot中的FailureAnalyzer使用詳解,Spring Boot的FailureAnalyzer是一個接口,它用于在Spring Boot應(yīng)用啟動失敗時提供有關(guān)錯誤的詳細(xì)信息,這對于開發(fā)者來說非常有用,因為它可以幫助我們快速識別問題并找到解決方案,需要的朋友可以參考下
    2023-12-12
  • springboot2.2 集成 activity6實現(xiàn)請假流程(示例詳解)

    springboot2.2 集成 activity6實現(xiàn)請假流程(示例詳解)

    這篇文章主要介紹了springboot2.2 集成 activity6實現(xiàn)請假完整流程示例詳解,本文通過示例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java中實現(xiàn)線程間通信的實例教程

    Java中實現(xiàn)線程間通信的實例教程

    線程通信的目標(biāo)是使線程間能夠互相發(fā)送信號,另一方面線程通信使線程能夠等待其他線程的信號,這篇文章主要給大家介紹了關(guān)于Java中實現(xiàn)線程間通信的相關(guān)資料,本文通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09

最新評論