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:---- --------------------请求信息---------------------------- -----
ここでの唯一のアクセス要求ログの印刷は、他の操作に連動して、プログラム実行の通知時期に印刷することができる、に応答して、通知後の印刷情報を配置することができます。
...