使用AOPアクセス要求ログを行うspringboot

AOPの導入とログspringboot:使用AOPアクセス要求ログを行うspringboot

1、のpom.xmlを導入しました:

<! - springBoot的AOP、已经集成了和AspectJのAOP春- > 
        < 依存> 
            < groupIdを> org.springframework.boot </ groupIdを> 
            < たartifactId >春・ブート・スターター-AOP </ たartifactId > 
        </ 依存関係> 

        <! - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging - > 
        < 依存> 
            < groupIdを> org.springframework.boot </ groupIdを> 
            < たartifactId >春・ブート・スターター・ログ</ たartifactId > 
        </ 依存関係>

 

2、アスペクトクラス構成:

@Component 
@Aspect 
パブリック クラスLogAspect { 

    プライベート 静的 最終ロガーロガー= LoggerFactory.getLogger(LogAspect。クラス)。
    // 切入点表达式、com.springboot.controller自己コントローラ包的路径
    @Pointcut( "実行(公開* com.springboot.controller .. *。*(..))")
     公共 ボイドポイントカット(){ 

    } 

    @前( "ポイントカット()" 公共 ボイドbeforeMethod(ジョインポイントジョインポイント){ 
        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();

        HttpServletRequestのリクエスト = ; servletRequestAttributes.getRequest()
      //を印刷するパラメータ情報取得 ストリングrequestURI
= Request.getRequestURI(); 文字列方法request.getMethod =() ;文字列RemoteAddrはrequest.getRemoteAddrを=()
     //ここで用いていますアリFASTJSON 文字列JSONString =
JSON.toJSONString(joinPoint.getArgs());
      //プリント情報 logger.info(
「------------------------要求情報---------------------------------- " ); logger.info( "要求時間:{} " 、新しい新しいてSimpleDateFormat( "MM-DD-YYYY HH:MM:SS")形式(新しい新しいA日付())); logger.info("RemoteAddrは:{}" 、RemoteAddrは)。 logger.info( "requestURI:{}" 、requestURI)。 logger.info( "コントローラー:{}" 、joinPoint.getTarget()のgetClass()。)。 logger.info( "メソッドのタイプ:{}" 方法); logger.info( "REQのパラス:{}" 、jsonString)。 logger.info(「------------------------请求信息------------------- ----------------」); } }

効果:

com.springboot.common.aop.LogAspect:------------------------请求信息-------------- -------------------- 
 com.springboot.common.aop.LogAspect:请求时间:2020年1月2日夜09時38分40秒
 com.springboot.common.aop .LogAspect:RemoteAddrは:0:0:0:0:0:0:0:1 
 com.springboot.common.aop.LogAspect:requestURI:/ユーザ/ 10001 
 com.springboot.common.aop.LogAspect:コントローラ:クラスCOM .springboot.controller.UserController
 com.springboot.common.aop.LogAspect:メソッドのタイプ:GET
 com.springboot.common.aop.LogAspect:REQパラス:[10001 ]
 com.springboot.common.aop.LogAspect:---- --------------------请求信息---------------------------- -----

ここでの唯一のアクセス要求ログの印刷は、他の操作に連動して、プログラム実行の通知時期に印刷することができる、に応答して、通知後の印刷情報を配置することができます。

...

おすすめ

転載: www.cnblogs.com/tdyang/p/12142177.html