最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)的,因此消費(fèi)者在進(jìn)行調(diào)用的時候,底層就是通過 HTTP Client 的這種方式進(jìn)行訪問。

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

但是最方便、最優(yōu)雅的方式是通過 Spring Cloud Open Feign 進(jìn)行服務(wù)間的調(diào)用 Spring Cloud 對 Feign 進(jìn)行了增強(qiáng),使 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 進(jìn)行增強(qiáng)支持 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 對其進(jìn)行整合。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)程序啟動時,會進(jìn)行包掃描,掃描所有 @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 進(jìn)行解碼,否則拋出 FeignException。
  • configuration:Feign 配置類,可以自定義 Feign 的 Encoder、Decoder、LogLevel、Contract。
  • fallback:定義容錯的處理類,當(dāng)調(diào)用遠(yuǎn)程接口失敗或超時時,會調(diào)用對應(yīng)接口的容錯邏輯,fallback 指定的類必須實(shí)現(xiàn) @FeignClient 標(biāo)記的接口。
  • fallbackFactory:工廠類,用于生成 fallback 類示例,通過這個屬性我們可以實(shí)現(xiàn)每個接口通用的容錯邏輯,減少重復(fù)的代碼。
  • path:定義當(dāng)前 FeignClient 的統(tǒng)一前綴。

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

相關(guān)文章

  • 配置SpringBoot方便的切換jar和war的方法示例

    配置SpringBoot方便的切換jar和war的方法示例

    這篇文章主要介紹了配置SpringBoot方便的切換jar和war的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java實(shí)現(xiàn)對象按照其屬性排序的兩種方法示例

    Java實(shí)現(xiàn)對象按照其屬性排序的兩種方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)對象按照其屬性排序的兩種方法,結(jié)合實(shí)例形式詳細(xì)分析了Java對象按照其屬性排序的兩種實(shí)現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下
    2020-05-05
  • Logback動態(tài)修改日志級別的方法

    Logback動態(tài)修改日志級別的方法

    這篇文章主要介紹了Logback動態(tài)修改日志級別的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • VsCode搭建Java開發(fā)環(huán)境的方法

    VsCode搭建Java開發(fā)環(huán)境的方法

    這篇文章主要介紹了VsCode搭建Java開發(fā)環(huán)境的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Jenkins自動部署Net Core過程圖解

    Jenkins自動部署Net Core過程圖解

    這篇文章主要介紹了Jenkins自動部署Net Core過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)

    SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)

    這篇文章主要介紹了SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 小伙熬夜用Java重現(xiàn)經(jīng)典超級馬里奧代碼實(shí)例

    小伙熬夜用Java重現(xiàn)經(jīng)典超級馬里奧代碼實(shí)例

    這篇文章主要介紹了Java重現(xiàn)經(jīng)典超級馬里奧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java實(shí)現(xiàn)三子棋小游戲簡易版

    Java實(shí)現(xiàn)三子棋小游戲簡易版

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)三子棋小游戲簡易版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java實(shí)現(xiàn)五子棋游戲(2.0)

    Java實(shí)現(xiàn)五子棋游戲(2.0)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 帶你輕松搞定Java面向?qū)ο蟮木幊?-數(shù)組,集合框架

    帶你輕松搞定Java面向?qū)ο蟮木幊?-數(shù)組,集合框架

    Java是面向?qū)ο蟮母呒壘幊陶Z言,類和對象是 Java程序的構(gòu)成核心。圍繞著Java類和Java對象,有三大基本特性:封裝是Java 類的編寫規(guī)范、繼承是類與類之間聯(lián)系的一種形式、而多態(tài)為系統(tǒng)組件或模塊之間解耦提供了解決方案
    2021-06-06

最新評論

望江县| 玛曲县| 揭阳市| 伽师县| 桂东县| 德阳市| 伊宁县| 曲麻莱县| 安达市| 军事| 监利县| 平舆县| 崇州市| 洞口县| 凤冈县| 章丘市| 米林县| 姚安县| 江油市| 太和县| 郸城县| 黄龙县| 乐清市| 读书| 福贡县| 兰州市| 淅川县| 新密市| 商水县| 泽普县| 博罗县| 安庆市| 凤冈县| 房产| 日喀则市| 鞍山市| 沾益县| 屏南县| 永德县| 清涧县| 朔州市|