package com.picacho.springaop.aspectj;
import cn.hutool.json.JSONUtil;
import eu.bitwalker.useragentutils.UserAgent;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.Objects;
@Aspect
@Component
@Slf4j
public class AopLog {
private static final String START_TIME = "request-start";
/**
* 切入点
*/
@Pointcut("execution(public * com.picacho.springaop.controller.*Controller.*(..))")
public void log() {
}
/**
* 前置操作
* @param point
*/
@Before("log()")
public void beforeLog(JoinPoint point) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
log.info("【请求 URL】:{}", request.getRequestURL());
log.info("【请求 IP】:{}", request.getRemoteAddr());
log.info("【请求类名】:{},【请求方法名】:{}", point.getSignature().getDeclaringTypeName(), point.getSignature().getName());
Map<String, String[]> parameterMap = request.getParameterMap();
log.info("【请求参数】:{},", JSONUtil.toJsonStr(parameterMap));
Long start = System.currentTimeMillis();
request.setAttribute(START_TIME, start);
}
/**
* 环绕操作
* @param point
* @return
* @throws Throwable
*/
@Around("log()")
public Object aroundLog(ProceedingJoinPoint point) throws Throwable {
Object result = point.proceed();
log.info("【返回值】:{}", JSONUtil.toJsonStr(result));
return result;
}
/**
* 后置操作
*/
@AfterReturning("log()")
public void afterReturning() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
Long start = (Long) request.getAttribute(START_TIME);
Long end = System.currentTimeMillis();
log.info("【请求耗时】:{}毫秒", end - start);
String header = request.getHeader("User-Agent");
UserAgent userAgent = UserAgent.parseUserAgentString(header);
log.info("【浏览器类型】:{},【操作系统】:{},【原始User-Agent】:{}", userAgent.getBrowser().toString(), userAgent.getOperatingSystem().toString(), header);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
springaop.zip (95个子文件)
springaop
pom.xml 2KB
target
test-classes
com
picacho
springaop
SpringaopApplicationTests.class 556B
generated-test-sources
test-annotations
classes
application.properties 1B
com
picacho
springaop
aspectj
AopLog.class 4KB
SpringaopApplication.class 1KB
controller
TestController.class 1KB
logback-spring.xml 5KB
generated-sources
annotations
logs
spring-boot-logback
info.created_on_2022-10-31.part_0.log 12KB
error.created_on_2022-10-31.part_0.log 1KB
springaop.iml 9KB
src
test
java
com
picacho
springaop
SpringaopApplicationTests.java 225B
main
resources
application.properties 1B
logback-spring.xml 5KB
java
com
picacho
springaop
aspectj
AopLog.java 3KB
controller
TestController.java 505B
SpringaopApplication.java 1KB
.idea
misc.xml 439B
jarRepositories.xml 845B
modules.xml 258B
encodings.xml 186B
compiler.xml 861B
workspace.xml 4KB
.gitignore 176B
libraries
Maven__com_fasterxml_jackson_core_jackson_annotations_2_10_1.xml 681B
Maven__org_junit_platform_junit_platform_commons_1_5_2.xml 663B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_12_1.xml 638B
Maven__ch_qos_logback_logback_classic_1_2_3.xml 598B
Maven__org_ow2_asm_asm_5_0_4.xml 502B
Maven__org_springframework_boot_spring_boot_starter_logging_2_2_2_RELEASE.xml 778B
Maven__eu_bitwalker_UserAgentUtils_1_21.xml 576B
Maven__org_objenesis_objenesis_2_6.xml 538B
Maven__org_junit_jupiter_junit_jupiter_5_5_2.xml 596B
Maven__junit_junit_4_12.xml 485B
Maven__org_springframework_boot_spring_boot_starter_json_2_2_2_RELEASE.xml 757B
Maven__org_springframework_spring_webmvc_5_2_2_RELEASE.xml 660B
Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml 603B
Maven__org_junit_jupiter_junit_jupiter_engine_5_5_2.xml 645B
Maven__org_springframework_spring_expression_5_2_2_RELEASE.xml 688B
Maven__org_xmlunit_xmlunit_core_2_6_3.xml 565B
Maven__ch_qos_logback_logback_core_1_2_3.xml 577B
Maven__org_mockito_mockito_core_3_1_0.xml 565B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_2_2_RELEASE.xml 771B
Maven__org_projectlombok_lombok_1_18_10.xml 561B
Maven__org_springframework_boot_spring_boot_starter_aop_2_2_2_RELEASE.xml 750B
Maven__org_springframework_spring_web_5_2_2_RELEASE.xml 639B
Maven__org_junit_jupiter_junit_jupiter_params_5_5_2.xml 645B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_29.xml 655B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_10_1.xml 766B
Maven__com_fasterxml_jackson_core_jackson_databind_2_10_1.xml 660B
Maven__org_slf4j_jul_to_slf4j_1_7_29.xml 564B
Maven__org_apiguardian_apiguardian_api_1_1_0.xml 602B
Maven__com_fasterxml_jackson_core_jackson_core_2_10_1.xml 632B
Maven__com_jayway_jsonpath_json_path_2_4_0.xml 576B
Maven__org_springframework_spring_jcl_5_2_2_RELEASE.xml 639B
Maven__org_springframework_boot_spring_boot_starter_validation_2_2_2_RELEASE.xml 799B
Maven__org_junit_jupiter_junit_jupiter_api_5_5_2.xml 624B
Maven__org_springframework_spring_aop_5_2_2_RELEASE.xml 639B
Maven__org_springframework_boot_spring_boot_test_2_2_2_RELEASE.xml 701B
Maven__org_springframework_spring_context_5_2_2_RELEASE.xml 667B
Maven__org_junit_platform_junit_platform_engine_1_5_2.xml 656B
Maven__jakarta_validation_jakarta_validation_api_2_0_1.xml 663B
Maven__org_springframework_spring_test_5_2_2_RELEASE.xml 646B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 730B
Maven__org_skyscreamer_jsonassert_1_5_0.xml 567B
Maven__org_springframework_boot_spring_boot_starter_2_2_2_RELEASE.xml 722B
Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_29.xml 641B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_2_2_RELEASE.xml 799B
Maven__org_mockito_mockito_junit_jupiter_3_1_0.xml 628B
Maven__net_bytebuddy_byte_buddy_agent_1_10_4.xml 608B
Maven__org_springframework_spring_core_5_2_2_RELEASE.xml 646B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_10_1.xml 725B
Maven__org_junit_vintage_junit_vintage_engine_5_5_2.xml 645B
Maven__jakarta_activation_jakarta_activation_api_1_2_1.xml 663B
Maven__com_fasterxml_classmate_1_5_1.xml 552B
Maven__org_jboss_logging_jboss_logging_3_4_1_Final.xml 638B
Maven__net_minidev_json_smart_2_3.xml 537B
Maven__org_slf4j_slf4j_api_1_7_29.xml 543B
Maven__net_bytebuddy_byte_buddy_1_10_4.xml 566B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 663B
Maven__org_opentest4j_opentest4j_1_2_0.xml 563B
Maven__org_springframework_boot_spring_boot_starter_test_2_2_2_RELEASE.xml 757B
Maven__org_yaml_snakeyaml_1_25.xml 525B
Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml 711B
Maven__org_aspectj_aspectjweaver_1_9_5.xml 572B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_2.xml 641B
Maven__org_assertj_assertj_core_3_13_2.xml 572B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_10_1.xml 711B
Maven__org_springframework_spring_beans_5_2_2_RELEASE.xml 653B
Maven__net_minidev_accessors_smart_1_2.xml 572B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_2_2_RELEASE.xml 764B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_29.xml 690B
Maven__org_springframework_boot_spring_boot_2_2_2_RELEASE.xml 666B
Maven__org_springframework_boot_spring_boot_starter_web_2_2_2_RELEASE.xml 750B
Maven__org_hamcrest_hamcrest_2_1.xml 527B
Maven__cn_hutool_hutool_all_5_5_1.xml 543B
共 95 条
- 1
资源评论
- Chi_apple2022-11-06很不错的资源,受益匪浅嘿嘿
picacho_pkq
- 粉丝: 76
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功