前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AOP拦截实现日志统一打印

AOP拦截实现日志统一打印

作者头像
用户9919783
发布于 2022-12-14 10:29:40
发布于 2022-12-14 10:29:40
67900
代码可运行
举报
运行总次数:0
代码可运行

需求背景:每个接口都有入参出参,如果每次都需要自己写代码打印入参出参,大家是否觉得很繁琐,为了减少冗余代码,提高同事工作效率,减少工作量,于是给代码加了aop统一拦截。

其实其他项目里已经有aop拦截,但是需要自己去加注解实现,如果每个接口需要自己手动加一个注解才会打印日志,我依然还是觉得很麻烦,为了大家专注于自己的需求开发,于是进行优化。

首先加注解代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

/**
 * log注解
 *
 * @author keying
 */
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface LogAnnotation {


}

/**
 * 日志统一打印
 * @author keying
 * @date 2022-11-03 19:40:28
 */
@Aspect
@Component
@Slf4j
public class LogAspect2 {

    private final String REQUEST = "REQUEST URL:{},REQUEST METHOD:{},REQUEST PARAM:{}";
    private final String RESPONSE = "RESPONSE URL:{},RESPONSE METHOD:{},RESPONSE PARAM:{}";

    @Pointcut("@annotation(com.ztocc.tms.operates.controller.config.LogAnnotation)")
    public void requestAspect() {
    }


    @Before(value = "requestAspect()")
    public void methodBefore(JoinPoint joinPoint) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes)
                RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        log.info(REQUEST, request.getRequestURI(), request.getMethod(),
                JSON.toJSONString(Arrays.toString(joinPoint.getArgs())));

    }

    @AfterReturning(returning = "o", pointcut = "requestAspect()")
    public void methodAfter(Object o) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes)
                RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        log.info(RESPONSE, request.getRequestURI(), request.getMethod(),
                JSONObject.toJSONString(o));
    }
}


 @PostMapping("/query_page")
    @LogAnnotation
    public Result<PageVo<ManageScanPageVO>> queryPage(@RequestBody ManageScanPageReq req) {
}

从图上可以看到,日志已经打印成功了

第一步:写一个注解,通过Aspect技术把拦截注解修饰的方法。

第二步:把注解写到需要打印日志的接口上。

于是通过修改上面代码,可以使代码更简洁,并且开发人员不需要关心是否加注解来打印日志。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制


/**
 * 日志统一打印
 * @author keying
 * @date 2022-11-03 19:40:28
 */
@Aspect
@Component
@Slf4j
public class LogAspect {

    private final String REQUEST = "REQUEST URL:{},REQUEST METHOD:{},REQUEST PARAM:{}";
    private final String RESPONSE = "RESPONSE URL:{},RESPONSE METHOD:{},RESPONSE PARAM:{}";

    /**
     * 拦截controller
     */
    @Pointcut("within(com.ztocc.tms.operates.controller..*)")
    public void requestAspect() {
    }


    @Before(value = "requestAspect()")
    public void methodBefore(JoinPoint joinPoint) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes)
                RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        log.info(REQUEST, request.getRequestURI(), request.getMethod(),
                JSON.toJSONString(Arrays.toString(joinPoint.getArgs())));

    }

    @AfterReturning(returning = "o", pointcut = "requestAspect()")
    public void methodAfter(Object o) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes)
                RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        log.info(RESPONSE, request.getRequestURI(), request.getMethod(),
                JSONObject.toJSONString(o));
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端从入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
推荐系统-学习总结
推荐系统目前几乎无处不在,主流的app都基本应用到了推荐系统。
J_J
2018/09/18
5.5K4
手Q游戏中心的个性化推荐实战
自手Q游戏中心V6.0改版以来,产品形态发生了较大的转变,不再是纯粹通过app列表做游戏分发,而是试图通过内容来带游戏分发,全新的产品形态给推荐算法带来了许多的挑战。
腾讯云大数据
2018/05/09
3.2K5
手Q游戏中心的个性化推荐实战
万字长文带你了解推荐系统全貌!
如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。
Datawhale
2020/10/27
7620
万字长文带你了解推荐系统全貌!
从零开始了解推荐系统全貌
| 导语 根据实际项目经验,从零开始介绍推荐的基础知识与整体框架。希望能帮助大家在了解部分碎片化知识后,形成对推荐系统全貌的认知。 本文作者:yijiapan,腾讯WXG数据科学 一、推荐算法的理解如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,节约大量用户与内容和服务连接的时间和成本。如果把推荐系统简单拆开来看,推荐系统主要是由数据、算法、架构三个方面组成。 数据提供了信息。数据储存了信息,包括用户与内容的属性,用户的行为偏好例如对新闻的点击、玩过的英雄、购买的物品等等。这些数
腾讯大讲堂
2022/03/03
4.6K0
“伯乐”流量调控平台工程视角 | 得物技术
(1)突发事件的应对:包括不限于外部的不可抗力影响,网络上的热点事件、爆仓等突发事件,在搜索&推荐等个性化流量场景下,单纯依靠算法模型的学习来适应,时间上不被业务方接受。
用户10346649
2023/03/15
7870
“伯乐”流量调控平台工程视角 | 得物技术
丁香园推荐系统实战
推荐系统可以说是一个闭环的生态系统了。从整体架构图中,我们就可以看出来,推荐列表从RankServer产生,用户点击推荐列表产生的日志又反作用于画像系统的更新,模型训练,新的推荐算法的实验,以及BI报表的生产,而这些又都是RankServer依赖的模块。
Spark学习技巧
2021/03/05
7210
丁香园推荐系统实战
推荐系统:石器与青铜时代
准确地说这个时代,不能称之为推荐系统的时代,这一个时代未能给每个用户构建属于他的推荐结果,没有很好地解决个性化长尾问题,所以这个可以叫前推荐时代。
石晓文
2019/07/24
5850
美团综合业务推荐系统的质量模型及实践
总第516篇 2022年 第033篇 推荐系统是效果导向的数据应用服务,在功能的“有”和“无”之间,有很长的效果“好”和“坏”的光谱。本文以用户请求的粒度建立质量模型,通过数据血缘关联了数据表、算法模型、系统服务和用户请求,并结合美团综合业务的实践进行了拓展泛化,希望能对大家有所帮助或启发。 1 前言 2 现状分析 3 建设思路 3.1 业务语境下的质量 3.2 缺陷的考量和选择 3.3 度量和计算的选型 4 计算方式 4.1 计算公式 4.2 业务泛化 4.3 指标体系 4.4 血缘拓展 5 指标运营
美团技术团队
2022/06/17
1.1K0
美团综合业务推荐系统的质量模型及实践
推荐系统与精细化运营
随着大数据与人工智能(AI)技术的发展与成熟,国家政策层面对大数据与人工智能技术、创新、创业层面的支持,企业越来越意识到数据和AI技术的价值,并逐步认可数据是企业的核心资产。怎么利用大数据和AI技术从这些价值密度低、源源不断地产生的海量数据中挖掘商业价值,提升公司的决策力和竞争力,是每个提供产品/服务的公司(特别是toC互联网公司)必须思考和探索的问题。
石晓文
2020/03/05
1.5K0
推荐系统与精细化运营
推荐系统综述
随着移动互联网的飞速发展,人们已经处于一个信息过载的时代。在这个时代中,信息的生产者很难将信息呈现在对它们感兴趣的信息消费者面前,而对于信息消费者也很难从海量的信息中找到自己感兴趣的信息。
Ward
2022/07/06
7370
微信游戏推荐系统大揭秘
作者:boxianlai,腾讯 WXG 应用研究员 这篇文章整理于 2020 年 12 月 31 号在腾讯 WXG T 族开放技分享材料,分享内容是我们在搭建一套适合微信游戏业务特色推荐系统过程中的设计方案和实践经验。这套系统从 18 年底开始设计 19 年初开发完成,现在已经在业务上运行了一年多,当前部门所有的推荐业务都已经应用上这套能力,包括所有精品 app 游戏分发和游戏相关的内容推荐、几万款小游戏分发,服务着几亿微信游戏玩家。在实际业务应用中,它切实满足了很多业务对推荐的诉求,同时在业务核心指
腾讯技术工程官方号
2021/04/22
1.5K0
QQ音乐内容理解与精细化运营
导语|本文主要分享QQ音乐在内容理解和精细化运营方面的一些实践和经验,副标题是推荐系统的精细化调控,本文主要围绕一些显性的、具可解释性的一些数据驱动方法在内容精细化运营场景的应用。 本文作者:billxia,腾讯音乐数据科学家 本文主要分为5部分:第1部分会介绍业务背景、总体解决方案和收益,第2~4部分分别介绍内容理解、运营中台、投放系统的具体实现方案,最后做一个简单的总结和展望。 01. 背景与方案 1.1 背景 QQ音乐作为一个以PGC内容为主的一款产品,编辑运营的内容占据了用户消费的很大一块流量,运
腾讯大讲堂
2023/01/04
1.9K0
QQ音乐内容理解与精细化运营
深度解析京东个性化推荐系统演进史
在电商领域,推荐的价值在于挖掘用户潜在购买需求,缩短用户到商品的距离,提升用户的购物体验。 京东推荐的演进史是绚丽多彩的。京东的推荐起步于2012年,当时的推荐产品甚至是基于规则匹配做的。整个推荐产品线组合就像一个个松散的原始部落一样,部落与部落之前没有任何工程、算法的交集。2013年,国内大数据时代到来,一方面如果做的事情与大数据不沾边,都显得自己水平不够,另外一方面京东业务在这一年开始飞速发展,所以传统的方式已经跟不上业务的发展了,为此推荐团队专门设计了新的推荐系统。 随着业务的快速发展以及移动互联网的
用户1263954
2018/01/30
2.3K0
深度解析京东个性化推荐系统演进史
深度解析京东个性化推荐系统演进史
作者 | fisherman、Davidxiaozhi 本文摘自《决战618:探秘京东技术取胜之道》,两位作者时任京东推荐系统负责人和系统架构师。 在电商领域,推荐的价值在于挖掘用户潜在购买需求,缩短
Spark学习技巧
2018/01/31
1.5K0
深度解析京东个性化推荐系统演进史
京东电商推荐系统实践
说到推荐系统,最经典的就是协同过滤,上图是一个协同过滤的例子。协同过滤主要分为俩种:user-based 基于用户的协同过滤和 item-based 基于商品的协调过滤。
石晓文
2019/08/13
2.7K0
京东电商推荐系统实践
深度解析京东个性化推荐系统演进史
在电商领域,推荐的价值在于挖掘用户潜在购买需求,缩短用户到商品的距离,提升用户的购物体验。 京东推荐的演进史是绚丽多彩的。京东的推荐起步于2012年,当时的推荐产品甚至是基于规则匹配做的。整个推荐产品线组合就像一个个松散的原始部落一样,部落与部落之前没有任何工程、算法的交集。2013年,国内大数据时代到来,一方面如果做的事情与大数据不沾边,都显得自己水平不够,另外一方面京东业务在这一年开始飞速发展,所以传统的方式已经跟不上业务的发展了,为此推荐团队专门设计了新的推荐系统。 随着业务的快速发展以及移动互联网的
CSDN技术头条
2018/02/07
2.9K0
深度解析京东个性化推荐系统演进史
【精品投稿】推荐系统评测心得
在介绍推荐算法评测之前,我先简单说下推荐系统,这里我以商品为例,简单描述下推流程,让大家更明白一些,一般推荐主要包含以下步骤: 召回->打分排序->透出
用户5521279
2019/06/02
1.3K0
产品浅谈用户分层在推荐上的应用
作者:zuliyang,腾讯PCG高级产品经理 |导语 常言道“物以类聚,人以群分”,运用在推荐策略上和常见的用户精细化运营策略类似,不同的用户群体行为存在差异,定向的归类建模单独施策以寻求差异化推荐,寻求各个分层用户的定向转化,最终实现业务核心指标的增长。 做过to C的产品人都经历过从前期的用户粗犷式运营到后期的流量精细化运营阶段,当业务指标提升空间遇到瓶颈或用户规模体量达到一定规模后,深耕用户流量精细化运营或许能带来些突破与可能。对于推荐业务用户分层是基于当前存量用户的行为或者属性做定向的划分,以
腾讯大讲堂
2020/12/16
2.4K0
有赞推荐系统关键技术
个性化推荐是随着移动互联网发展不断发展起来的,它是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。有赞微商城使用个性化推荐系统,尤其是在关键节点增加推荐入口,进行场景化推荐,帮助商家进一步提高用户的付款转化率,最大化流量变现。
有赞coder
2020/08/25
1.1K0
有赞推荐系统关键技术
一窥推荐系统的原理
推荐系统是建立在海量数据挖掘基础上,高效地为用户提供个性化的决策支持和信息服务,以提高用户体验及商业效益。常见的推荐应用场景如:
算法进阶
2022/06/02
9310
一窥推荐系统的原理
相关推荐
推荐系统-学习总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档