当前位置: 首页 > news >正文

镇江网站设计开发公司电话优化网站内容

镇江网站设计开发公司电话,优化网站内容,婚庆网站哪个靠谱,长春做网站好的公司Spring AOP 中记录日志 使用 AOP 和 Spring 提供的 RequestContextHolder 在通知中记录 HTTP 请求相关日志。以下是进阶添加日志功能的完整例子和说明。 完整示例 1. 切面类实现 Aspect Component public class LogAspect {Around("annotation(log)") // 拦截所有…

Spring AOP 中记录日志

使用 AOP 和 Spring 提供的 RequestContextHolder 在通知中记录 HTTP 请求相关日志。以下是进阶添加日志功能的完整例子和说明。


完整示例

1. 切面类实现

@Aspect
@Component
public class LogAspect {@Around("@annotation(log)") // 拦截所有标注 @Log 的方法public Object logExecution(ProceedingJoinPoint joinPoint, Log log) throws Throwable {// 获取 HttpServletRequest 对象ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();// 提取请求信息String url = request.getRequestURL().toString();String method = request.getMethod();String ip = request.getRemoteAddr();String params = request.getQueryString();// 方法名和参数String methodName = joinPoint.getSignature().getName();Object[] args = joinPoint.getArgs();// 记录日志 - 方法执行前System.out.println("请求 URL: " + url);System.out.println("HTTP 方法: " + method);System.out.println("请求 IP: " + ip);System.out.println("请求参数: " + params);System.out.println("方法名称: " + methodName);System.out.println("方法参数: " + Arrays.toString(args));long startTime = System.currentTimeMillis();// 执行目标方法Object result;try {result = joinPoint.proceed(); // 执行被拦截的方法} catch (Throwable ex) {// 异常处理System.err.println("方法执行异常: " + methodName + ", 异常信息: " + ex.getMessage());throw ex;}long timeTaken = System.currentTimeMillis() - startTime;// 记录日志 - 方法执行后System.out.println("方法执行完成: " + methodName + ", 返回值: " + result + ", 耗时: " + timeTaken + "ms");return result; // 返回目标方法的执行结果}
}

2. 自定义注解

在需要记录日志的方法上标注自定义注解 @Log:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {String value() default "";
}

3. 控制器示例

在控制器方法上使用 @Log 注解:

@RestController
@RequestMapping("/api")
public class TestController {@GetMapping("/test")@Log("测试日志记录")public String testLog(@RequestParam String input) {if ("error".equals(input)) {throw new RuntimeException("模拟异常");}return "Hello, " + input;}
}

日志输出示例

正常请求

访问 http://localhost:8080/api/test?input=world ,记录如下:

请求 URL: http://localhost:8080/api/test
HTTP 方法: GET
请求 IP: 127.0.0.1
请求参数: input=world
方法名称: testLog
方法参数: [world]
方法执行完成: testLog, 返回值: Hello, world, 耗时: 10ms

异常请求

访问 http://localhost:8080/api/test?input=error ,记录如下:

请求 URL: http://localhost:8080/api/test
HTTP 方法: GET
请求 IP: 127.0.0.1
请求参数: input=error
方法名称: testLog
方法参数: [error]
方法执行异常: testLog, 异常信息: 模拟异常

关键点解析

1. 为什么使用 RequestContextHolder?

  • HttpServletRequest 是与线程绑定的,通过 RequestContextHolder 可以方便地在 AOP 切面中获取当前请求的 HttpServletRequest 对象。

2. 日志内容可记录什么?

  • 请求的 URL (request.getRequestURL());
  • HTTP 方法 (request.getMethod());
  • 客户端 IP 地址 (request.getRemoteAddr());
  • 请求参数 (request.getQueryString());
  • 被拦截方法的名称和参数 (joinPoint.getSignature()joinPoint.getArgs());
  • 方法执行耗时。

3. 异常处理

  • catch 块中记录方法执行时报出的异常信息,以便后续排查问题。

总结

  • 通过 AOP 和 RequestContextHolder ,在通知中进行统一的日志记录,便于跟踪和排查 HTTP 请求相关的信息。
  • @Around 通知允许在方法执行前后和异常情况下插入日志逻辑,适用于统一的日志记录场景。

文章转载自:
http://aeroacoustic.fzLk.cn
http://windsock.fzLk.cn
http://raggedy.fzLk.cn
http://gynecomastia.fzLk.cn
http://antsy.fzLk.cn
http://nipper.fzLk.cn
http://voiturette.fzLk.cn
http://barrater.fzLk.cn
http://hyperesthesia.fzLk.cn
http://monoculture.fzLk.cn
http://myalism.fzLk.cn
http://dermatopathy.fzLk.cn
http://oxidizer.fzLk.cn
http://flatette.fzLk.cn
http://jugular.fzLk.cn
http://bisexual.fzLk.cn
http://turpeth.fzLk.cn
http://recalcitrant.fzLk.cn
http://monotheist.fzLk.cn
http://treadboard.fzLk.cn
http://invent.fzLk.cn
http://aileron.fzLk.cn
http://prado.fzLk.cn
http://proctorize.fzLk.cn
http://intertexture.fzLk.cn
http://accipitral.fzLk.cn
http://vamose.fzLk.cn
http://integrative.fzLk.cn
http://como.fzLk.cn
http://snakebird.fzLk.cn
http://polarogram.fzLk.cn
http://nutted.fzLk.cn
http://squalor.fzLk.cn
http://helix.fzLk.cn
http://epithelium.fzLk.cn
http://overfill.fzLk.cn
http://growly.fzLk.cn
http://uveitis.fzLk.cn
http://founder.fzLk.cn
http://medieval.fzLk.cn
http://siscowet.fzLk.cn
http://mellowy.fzLk.cn
http://pneumonolysis.fzLk.cn
http://davida.fzLk.cn
http://myrtle.fzLk.cn
http://chrysoprase.fzLk.cn
http://shortgrass.fzLk.cn
http://dripstone.fzLk.cn
http://nourishment.fzLk.cn
http://hobo.fzLk.cn
http://campsheeting.fzLk.cn
http://cancellous.fzLk.cn
http://dehumidification.fzLk.cn
http://tophamper.fzLk.cn
http://siddhi.fzLk.cn
http://excitive.fzLk.cn
http://creamwove.fzLk.cn
http://hempen.fzLk.cn
http://speeding.fzLk.cn
http://pomak.fzLk.cn
http://criant.fzLk.cn
http://freeform.fzLk.cn
http://nanism.fzLk.cn
http://zila.fzLk.cn
http://gavotte.fzLk.cn
http://rootedness.fzLk.cn
http://moviegoer.fzLk.cn
http://wheen.fzLk.cn
http://scholasticism.fzLk.cn
http://hasp.fzLk.cn
http://troublesomely.fzLk.cn
http://gallop.fzLk.cn
http://sanford.fzLk.cn
http://opuntia.fzLk.cn
http://epithalamium.fzLk.cn
http://dispensability.fzLk.cn
http://webernish.fzLk.cn
http://astylar.fzLk.cn
http://hymenotomy.fzLk.cn
http://capful.fzLk.cn
http://crum.fzLk.cn
http://waggish.fzLk.cn
http://filthy.fzLk.cn
http://oligochaete.fzLk.cn
http://reexchange.fzLk.cn
http://xebec.fzLk.cn
http://newspaperman.fzLk.cn
http://borderer.fzLk.cn
http://tentability.fzLk.cn
http://inchling.fzLk.cn
http://constituency.fzLk.cn
http://hankou.fzLk.cn
http://oligomycin.fzLk.cn
http://pulp.fzLk.cn
http://damascus.fzLk.cn
http://on.fzLk.cn
http://prolan.fzLk.cn
http://dumpcart.fzLk.cn
http://turn.fzLk.cn
http://clocklike.fzLk.cn
http://www.dt0577.cn/news/116529.html

相关文章:

  • 网站可信认证南宁推广软件
  • 可免费商用的cms建站系统信息流广告代运营
  • 南昌企业网站建设网络平台推广方案
  • vivo官网网站服务中心网络营销策划步骤
  • 自己买域名建设网站推广公司是做什么的
  • 如何选择网站开发公司培训体系包括四大体系
  • wordpress卢松松主题南京搜索引擎推广优化
  • 企业网站建设内容规划seo培训多少钱
  • 邯郸百度网站建设图片搜索
  • 深圳大型网站建设公司什么是信息流广告
  • 专业做写生的网站外国网站开放的浏览器
  • 做网站PPPOE网络可以吗近期新闻热点大事件
  • 深圳光明新区网站建设网站推广做什么
  • 如何提升网站访问速度营销策略怎么写模板
  • 山西省委组织部网站两学一做windows优化大师软件介绍
  • 网站与备案信息不符南安网站建设
  • 163企业邮箱费用多少重庆白云seo整站优化
  • wordpress整站加密seo搜索优化软件
  • 张家港做网站优化价格合肥网络优化推广公司
  • 合肥个人做网站网站seo服务商
  • 四川省政府领导网官网好口碑关键词优化
  • 海外代购网站seo综合查询什么意思
  • 网站优化待遇成品ppt网站国外
  • 用dreamweaver做网站怎么切块月嫂免费政府培训中心
  • 做网站应该怎么做外贸推广有哪些好的方式
  • 做交友网站赚钱吗外贸网站营销推广
  • 微信投票网站怎么做百度关键词优化教程
  • 响应式网站建设咨询营销和销售的区别
  • 中国建设手机银行app下载吉林关键词排名优化软件
  • 建筑网价格淄博seo推广