欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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í)長(zhǎng))
 * @Date: Create in 19:03 2021/1/26
 */
public class DubboLoggerFilter implements Filter {
    protected Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * rpc日志最長(zhǎng)字符串
     */
    private final static Integer MAX_LOG_LENGTH=5000;
    /**
     * rpc日志超過長(zhǎng)度截取長(zhǎng)度
     */
    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)文章

  • springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題

    springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題

    這篇文章主要介紹了springboot啟動(dòng)的注意事項(xiàng)之不同包下有同樣名字的class類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java 異常之手動(dòng)拋出與自動(dòng)拋出的實(shí)例講解

    java 異常之手動(dòng)拋出與自動(dòng)拋出的實(shí)例講解

    這篇文章主要介紹了java 異常之手動(dòng)拋出與自動(dòng)拋出的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • IDEA報(bào)錯(cuò)"Cannot?resolve?symbol"問題的解決辦法

    IDEA報(bào)錯(cuò)"Cannot?resolve?symbol"問題的解決辦法

    早上來了,打開idea發(fā)現(xiàn)注解等都變紅報(bào)錯(cuò)can’t resolvesymbol,由于這個(gè)錯(cuò)之前也報(bào)過,所以記錄一下,這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò)"Cannot?resolve?symbol"問題的解決辦法,需要的朋友可以參考下
    2023-11-11
  • java打印出菱形圖案實(shí)例詳解

    java打印出菱形圖案實(shí)例詳解

    在本篇文章里小編給大家分享的是關(guān)于java打印出菱形圖案實(shí)例詳解,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • SpringBoot 2.x 整合Lombok的方法示例

    SpringBoot 2.x 整合Lombok的方法示例

    Spring Boot是非常高效的開發(fā)框架,lombok是一套代碼模板解決方案,將極大提升開發(fā)的效率,這篇文章主要介紹了SpringBoot 2.x 整合Lombok的方法示例,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Java SpringBoot使用guava過濾器

    Java SpringBoot使用guava過濾器

    這篇文章主要介紹了Java SpringBoot使用guava過濾器,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Java 中synchronize函數(shù)的實(shí)例詳解

    Java 中synchronize函數(shù)的實(shí)例詳解

    這篇文章主要介紹了Java 中synchronize函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家理解使用synchronize函數(shù)的使用方法,需要的朋友可以參考下
    2017-09-09
  • Java并發(fā)編程之原子變量與非阻塞同步機(jī)制

    Java并發(fā)編程之原子變量與非阻塞同步機(jī)制

    這篇文章主要介紹了Java并發(fā)編程之原子變量與非阻塞同步機(jī)制,本文講解了非阻塞算法、悲觀技術(shù)、樂觀技術(shù)、CAS操作、原子變量、性能比較:鎖與原子變量等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • java方法通用返回結(jié)果集封裝操作

    java方法通用返回結(jié)果集封裝操作

    這篇文章主要介紹了java方法通用返回結(jié)果集封裝操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 在java中調(diào)用python腳本的三種方法

    在java中調(diào)用python腳本的三種方法

    實(shí)際工程項(xiàng)目中可能會(huì)用到Java和python兩種語言結(jié)合進(jìn)行,這樣就會(huì)涉及到一個(gè)問題,就是怎么用Java程序來調(diào)用已經(jīng)寫好的python腳本呢,這篇文章主要給大家介紹了關(guān)于在java中調(diào)用python腳本的三種方法,需要的朋友可以參考下
    2023-09-09

最新評(píng)論