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

SpringBoot?AOP統(tǒng)一處理Web請(qǐng)求日志的示例代碼

 更新時(shí)間:2023年02月09日 14:47:57   作者:TryMyBestTo  
springboot有很多方法處理日志,例如攔截器,aop切面,service中代碼記錄等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot?AOP統(tǒng)一處理Web請(qǐng)求日志的相關(guān)資料,需要的朋友可以參考下

SpringBoot AOP統(tǒng)一處理Web請(qǐng)求日志

引入依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  • 新建過濾器 WebLogAspect.java
    • 使用 @Aspect 注解修飾:說明當(dāng)前類 是一個(gè)切面類。
    • 使用 @Component注解修飾:標(biāo)記 切面類 為組件,這樣 IOC 容器 會(huì)為其實(shí)例化和管理(< bean>)
  • 定義切面方法:webLog() 方法名隨意
    • 使用環(huán)繞通知 @Around(“execution(public * com.daxiong.mall.Controller..(…))”) 注解修飾指定 切面范圍。
@Around("execution(public * com.daxiong.mall.controller.*.*(..))")
public Object webLog(ProceedingJoinPoint pjp) {}

記錄請(qǐng)求 URL:

ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
log.info("URL : " + request.getRequestURL().toString());

請(qǐng)求類型:

log.info("HTTP_METHOD : " + request.getMethod());

IP 地址:

  • 若是本地 localhost,則會(huì)返回 ipv6 0:0:0:0:0:0:0:1
log.info("IP : " + request.getRemoteAddr());

記錄請(qǐng)求的 類以及方法:

  • 使用 環(huán)繞通知的 ProceedingJoinPoint 參數(shù)。
log.info("CLASS_METHOD : " + pjp.getSignature().getDeclaringTypeName() + "." + pjp.getSignature().getName());

記錄請(qǐng)求參數(shù):

log.info("ARGS : " + Arrays.toString(pjp.getArgs()));

執(zhí)行方法,處理請(qǐng)求

Object res = pjp.proceed(pjp.getArgs());

記錄響應(yīng)結(jié)果 使用 jackson 將帝鄉(xiāng)轉(zhuǎn)換為 json 格式。

log.info("RESPONSE : " + new ObjectMapper().writeValueAsString(res));

全部:

/**
 * 打印請(qǐng)求和響應(yīng)信息
 */
@Aspect
@Component
public class WebLogAspect {
    private final Logger log = LoggerFactory.getLogger(WebLogAspect.class);

    @Around("execution(public * com.daxiong.mall.controller.*.*(..))")
    public Object webLog(ProceedingJoinPoint pjp) throws Throwable {
        log.info("========================新的請(qǐng)求========================");
        // 收到請(qǐng)求,記錄請(qǐng)求內(nèi)容
        ServletRequestAttributes attributes =
                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        log.info("URL : " + request.getRequestURL().toString());
        log.info("HTTP_METHOD : " + request.getMethod());
        // 若是 localhost,則會(huì)返回 0:0:0:0:0:0:0:1
        log.info("IP : " + request.getRemoteAddr());

        log.info("CLASS_METHOD : " + pjp.getSignature().getDeclaringTypeName() + "." + pjp.getSignature().getName());
        log.info("ARGS : " + Arrays.toString(pjp.getArgs()));

        // 執(zhí)行方法,處理請(qǐng)求
        Object res = pjp.proceed(pjp.getArgs());

        // 記錄響應(yīng)
        log.info("RESPONSE : " + new ObjectMapper().writeValueAsString(res));

        return res;
    }
}

總結(jié)

到此這篇關(guān)于SpringBoot AOP統(tǒng)一處理Web請(qǐng)求日志的文章就介紹到這了,更多相關(guān)SpringBoot AOP統(tǒng)一處理Web請(qǐng)求日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡單了解Spring Bean常用注解的裝配

    簡單了解Spring Bean常用注解的裝配

    這篇文章主要介紹了簡單了解Spring Bean常用注解的裝配,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • idea中l(wèi)ombok啟用的方法示例

    idea中l(wèi)ombok啟用的方法示例

    這篇文章主要介紹了idea中l(wèi)ombok啟用的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot?Starter自定義全局加解密組件的詳細(xì)流程

    SpringBoot?Starter自定義全局加解密組件的詳細(xì)流程

    SpringBoot?Starter作用將一組相關(guān)的依賴打包,簡化項(xiàng)目的配置和初始化過程,通過特定的Starter開發(fā)者可以快速的實(shí)現(xiàn)特定功能模塊的開發(fā)和擴(kuò)展,本文給大家介紹了SpringBoot?Starter自定義全局加解密組件的詳細(xì)流程,需要的朋友可以參考下
    2024-02-02
  • Java?swing實(shí)現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的訪問問題

    Java?swing實(shí)現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的訪問問題

    這篇文章主要介紹了Java?swing實(shí)現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的訪問,本次實(shí)驗(yàn)需要做一個(gè)GUI界面和一個(gè)連接查詢功能,在論壇上借鑒了其他大佬獲取網(wǎng)站內(nèi)容的部分代碼,然后自己做了一個(gè)及其簡陋的swing界面,算是把這個(gè)實(shí)驗(yàn)完成了,需要的朋友可以參考下
    2022-09-09
  • IntelliJ?IDEA?代碼運(yùn)行時(shí)中文出現(xiàn)亂碼問題及解決方法

    IntelliJ?IDEA?代碼運(yùn)行時(shí)中文出現(xiàn)亂碼問題及解決方法

    在我們剛接觸到IDEA時(shí),想美滋滋的敲一個(gè)“hello?world”來問候這個(gè)世界,但難免會(huì)遇到這種問題亂碼,這篇文章主要介紹了解決IntelliJ?IDEA?代碼運(yùn)行時(shí)中文出現(xiàn)亂碼問題,需要的朋友可以參考下
    2023-09-09
  • 關(guān)于jdk環(huán)境變量的配置方式解讀

    關(guān)于jdk環(huán)境變量的配置方式解讀

    這篇文章主要介紹了關(guān)于jdk環(huán)境變量的配置方式解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 基于Zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能

    基于Zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能

    無論是采用SOA還是微服務(wù)架構(gòu),都需要使用服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)組件,本文將基于 Zookeeper 實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能,如果跟我一樣有同樣的困惑,希望可以通過本文了解其他組件如何使用 Zookeeper 作為注冊(cè)中心的工作原理
    2023-09-09
  • Java中的動(dòng)態(tài)代理實(shí)現(xiàn)代碼實(shí)例

    Java中的動(dòng)態(tài)代理實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了Java中的動(dòng)態(tài)代理實(shí)現(xiàn)代碼實(shí)例,jdk動(dòng)態(tài)代理本質(zhì)上是使用被代理對(duì)象的類加載器,通過被代理類實(shí)現(xiàn)的接口在運(yùn)行時(shí)動(dòng)態(tài)構(gòu)造出代理類來增強(qiáng)原始類的功能的方法,需要的朋友可以參考下
    2023-12-12
  • Java8新特性Stream的完全使用指南

    Java8新特性Stream的完全使用指南

    這篇文章主要給大家介紹了關(guān)于Java8新特性Stream的完全使用指南,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)

    線性表(linear?list)是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。順序表是常見的線性表之一,本文將詳細(xì)講講順序表的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-08-08

最新評(píng)論

南开区| 永春县| 临颍县| 调兵山市| 香格里拉县| 海兴县| 夏津县| 西丰县| 广西| 达拉特旗| 繁昌县| 阳新县| 岫岩| 四川省| 中牟县| 嘉鱼县| 宣武区| 龙川县| 大英县| 夏河县| 太和县| 临清市| 牡丹江市| 青龙| 郸城县| 公安县| 浦东新区| 绥中县| 乐都县| 乐陵市| 确山县| 瓦房店市| 金川县| 武汉市| 定边县| 泸州市| 长沙市| 旬邑县| 玉山县| 安康市| 长治市|