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

DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)?、出參等信?最新推薦)

 更新時(shí)間:2022年12月16日 11:45:08   作者:小目標(biāo)青年  
這篇文章主要介紹了DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)ⅰ⒊鰠⒌刃畔?首先自定義一個(gè)過濾器?DubboLoggerFilter.java,本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下

Dubbo過濾器概述

Dubbo中的過濾器和Web應(yīng)用中的過濾器的概念是一樣的,提供了在服務(wù)調(diào)用前后插入自定義邏輯的途徑。過濾器是整個(gè)Dubbo框架中非常重要的組成部分,Dubbo中很多功能都是基于過濾器擴(kuò)展而來的。過濾器提供了服務(wù)提供者和消費(fèi)者調(diào)用過程的攔截,即每次都執(zhí)行RPC調(diào)用的時(shí)候,對(duì)應(yīng)的過濾器都會(huì)生效。雖然過濾器的功能強(qiáng)大,但由于每次調(diào)用時(shí)都會(huì)執(zhí)行,因此在使用的時(shí)候需要注意它對(duì)性能的影響。

過濾器的使用

  • 一種方式是使用@Active注解默認(rèn)啟用;
  • 一種方式是在配置文件中配置;
<!-- 消費(fèi)方調(diào)用過程攔截 -->
<dubbo:reference filter="xxx, yyy" />

<!-- 消費(fèi)方調(diào)用過程默認(rèn)攔截器,將攔截所有reference -->
<dubbo:consumer filter="xxx, yyy" />

<!-- 服務(wù)提供方調(diào)用過程攔截 -->
<dubbo:service filter="xxx, yyy" />

<!-- 服務(wù)提供方調(diào)用過程默認(rèn)攔截器,將攔截所有service -->
<dubbo:provider filter="xxx, yyy" />

下面看下DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)ⅰ⒊鰠⒌刃畔?/h2>

①自定義一個(gè)過濾器 DubboLoggerFilter.java

import org.apache.dubbo.rpc.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
 
/**
 * @Author: JCccc
 * @Description: dubbo請(qǐng)求和響應(yīng)攔截(記錄請(qǐng)求參數(shù)和響應(yīng)結(jié)果和時(shí)長)
 * @Date: Create in 19:03 2021/1/26
 */
public class DubboLoggerFilter implements Filter {
    protected Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * rpc日志最長字符串
     */
    private final static Integer MAX_LOG_LENGTH=5000;
    /**
     * rpc日志超過長度截取長度
     */
    private final static Integer REMAINING_LOG_LENGTH=1000;
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
 
        String methodName = invocation.getMethodName();
        Object[] arguments = invocation.getArguments();
        String className = invoker.getInterface().getName();
        String callMethod = className + "." + methodName;
        String argsJson = JSON.toJSONString(arguments);
        logger.info("rpc接口callMethod:{}>>入?yún)?{}", callMethod, argsJson);
        long start = System.currentTimeMillis();
        AsyncRpcResult result = (AsyncRpcResult)invoker.invoke(invocation);
        if(result.hasException()){
            logger.info("rpc接口callMethod:{},接口耗時(shí):{},異常:{},", callMethod,  System.currentTimeMillis() - start,result.getException().getMessage());
        } else {
            Object resultString = JSON.toJSON(result.getAppResponse().getValue());
            if(resultString!=null&&resultString.toString().length()>MAX_LOG_LENGTH){
                resultString=resultString.toString().substring(0,REMAINING_LOG_LENGTH)+"...";
            }
            logger.info("rpc接口callMethod:{},出參:{},接口耗時(shí):{}", callMethod,resultString , System.currentTimeMillis() - start);
        }
        return result;
 
    }
}

② 加上配置

到此這篇關(guān)于DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)?、出參等信息的文章就介紹到這了,更多相關(guān)DUBBO 日志過濾器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 理解Java中的內(nèi)存泄露及解決方法示例

    理解Java中的內(nèi)存泄露及解決方法示例

    這篇文章主要介紹了理解Java中的內(nèi)存泄露及解決方法示例,本文講解了Java內(nèi)存管理機(jī)制、Java內(nèi)存泄露、一般情況下內(nèi)存泄漏的避免、復(fù)雜數(shù)據(jù)結(jié)構(gòu)中的內(nèi)存泄露問題等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 簡單講解Android開發(fā)中觸摸和點(diǎn)擊事件的相關(guān)編程方法

    簡單講解Android開發(fā)中觸摸和點(diǎn)擊事件的相關(guān)編程方法

    這篇文章主要介紹了Android開發(fā)中觸摸和點(diǎn)擊事件的相關(guān)編程方法,包括事件偵聽器等安卓開發(fā)中常用的接口的基本使用方法,需要的朋友可以參考下
    2015-12-12
  • AsyncHttpClient ListenableFuture源碼流程解讀

    AsyncHttpClient ListenableFuture源碼流程解讀

    這篇文章主要為大家介紹了AsyncHttpClient ListenableFuture源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError

    Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError

    這篇文章主要介紹了Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • JAVA實(shí)現(xiàn)redis分布式雙重加鎖的示例代碼

    JAVA實(shí)現(xiàn)redis分布式雙重加鎖的示例代碼

    在高并發(fā)環(huán)境下,通過Redis分布式鎖實(shí)現(xiàn)數(shù)據(jù)唯一性校驗(yàn)非常關(guān)鍵,為避免用戶數(shù)據(jù)重復(fù),可使用Redis鎖或集合數(shù)據(jù)結(jié)構(gòu)進(jìn)行前置檢查,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • IDEA2022創(chuàng)建Maven Web項(xiàng)目教程(圖文)

    IDEA2022創(chuàng)建Maven Web項(xiàng)目教程(圖文)

    本文主要介紹了IDEA2022創(chuàng)建Maven Web項(xiàng)目教程,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Eclipse配置Tomcat和JDK步驟圖解

    Eclipse配置Tomcat和JDK步驟圖解

    這篇文章主要內(nèi)容是Eclipse配置Tomcat和JDK步驟圖解,需要的朋友可以參考下
    2015-08-08
  • Spring Boot3整合Mybatis Plus的詳細(xì)過程(數(shù)據(jù)庫為MySQL)

    Spring Boot3整合Mybatis Plus的詳細(xì)過程(數(shù)據(jù)庫為MySQL)

    這篇文章主要介紹了Spring Boot3整合Mybatis Plus的詳細(xì)過程(數(shù)據(jù)庫為MySQL),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • java微信公眾號(hào)開發(fā)案例

    java微信公眾號(hào)開發(fā)案例

    這篇文章主要為大家詳細(xì)介紹了java微信公眾號(hào)開發(fā)案例,如何接入公眾號(hào),訂閱號(hào)怎么樣接收消息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Java實(shí)現(xiàn)二維碼、條形碼功能(案例代碼)

    Java實(shí)現(xiàn)二維碼、條形碼功能(案例代碼)

    ZXing是一個(gè)開放源碼的,用Java實(shí)現(xiàn)的多種格式的1D/2D條碼圖像處理庫,它包含了聯(lián)系到其他語言的端口,Zxing可以實(shí)現(xiàn)使用手機(jī)的內(nèi)置的攝像頭完成條形碼的掃描及解碼,這篇文章主要介紹了Java實(shí)現(xiàn)二維碼、條形碼等功能,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

博客| 镇雄县| 武夷山市| 崇仁县| 颍上县| 孝昌县| 彭泽县| 澜沧| 琼结县| 邵阳县| 大宁县| 杂多县| 宁陵县| 汾西县| 绥宁县| 体育| 郎溪县| 威远县| 吉木乃县| 苏尼特右旗| 正蓝旗| 防城港市| 竹溪县| 仁怀市| 紫阳县| 东至县| 和平县| 蓝山县| 蒲江县| 沈阳市| 泗水县| 花垣县| 正阳县| 长兴县| 包头市| 太保市| 班玛县| 溧阳市| 兴城市| 攀枝花市| 龙海市|