首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用 AOP 记录接口日志

对于调试接口通常的做法就是把入参用接口工具向接口地址提交,然后把获取到的返回值和项目中的返回值进行比对。这样来看,在代码中调用接口的入参和调用接口后的返回值对于排错来说就非常重要了。...那这样的话,我们可以在每个调用接口地址的前后使用输出日志的方式来记录,就可以得到调用接口的入参和接口的返回值,从而有利于我们以后的调试了。...我们可以使用 SLF4J 或者 LogBack 等日志框架,在调用接口时来输出一下入参和返回值,大致方法是在调用接口前调用 logger.info 输出入参,然后调用接口后再次调用 logger.info...这样的方式虽然没有问题,但是在每个接口调用前后都要加这样的日志输出代码显得过于麻烦,且不优雅。 简单的解决方法 在 Spring 框架中为我们提供了 AOP,即面向切面编程。...,来看下 AOP 记录的日志日志如下: ===> TID:40 => 准备调用 getAccessToken 方法 方法: getAccessToken 的返回值为: {

54030

PSR-3 日志接口规范

PSR-3 日志接口规范 本文制定了日志类库的通用接口规范。 本规范的主要目的,是为了让日志类库以简单通用的方式,通过接收一个 Psr\Log\LoggerInterface 对象,来记录日志信息。...框架以及 CMS 内容管理系统如有需要,可以 对此接口进行扩展,但需遵循本规范, 这才能保证在使用第三方的类库文件时,日志接口仍能正常对接。...实现者 可以 通过对占位符采用不同的转义和转换策略,来生成最终的日志。 而使用者在不知道上下文的前提下,不应该 提前转义占位符。 以下是一个占位符使用的例子: 1<?...助手类和接口 Psr\Log\AbstractLogger 类使得只需继承它和实现其中的 log 方法,就能够很轻易地实现 LoggerInterface 接口,而另外八个方法就能够把记录信息和上下文信息传给它...在没有可用的日志记录器时,Psr\Log\NullLogger 接口 可以 为使用者提供一个备用的日志 黑洞。不过,当上下文的构建非常消耗资源时,带条件检查的日志记录或许是更好的办法。

22720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    架构设计 - 日志管理接口设计

    在后端代码中,日志无处不在,设计一套自己的日志管理代码,给框架提供一套好用的日志接口将大大方便代码的开发。...其中在日志管理代码的编写中,主要有以下难点: 1.数目不确定的入参函数编写 2.日志权限控制 3.日志输出形式。...接口设计: 1.提供三类日志打印形式:1)控制台打印信息,类似printf的接口封装             2)函数追踪接口,打印当前代码的文件名,函数名及行,以及一些设定的输出参数             ...3)日志打印函数,提供打印级别控制,且打印内容输出到日志文件中 2.提供日志级别控制:1)在打印日志时提供当前日志级别,代码依据级别进行控制打印           2)日志打印级别控制暂时使用配置文件...,后续可以通过通信接口进行实时修改 下面附上代码实现:DMLogManager.h 1 //======================================================

    67840

    给SpringBoot接口加全局日志(AOP)

    company项目差不多到了尾声,leader突然告知我,给所有API接口加上个执行时间放到日志。 我还得把所有接口都得修改,加一个开始时间,加一个结束时间,然后输出到日志。 ?...先来给大家看看我们现在的日志(如下图): ? 感觉乱的一锅粥。根本不知道执行了什么。 一想到,每个接口都需要加一个开始时间和一个结束时间,我就感觉特别烦,就是不想撸代码。 ?...我还是加一下日志吧,要不饭都没得吃了。 我问我朋友 怎么快速测试每个接口API执行时间。我朋友说你先去看看java的特性。 ? 我打开了百度百科:突然想到 java最大的特性就是面向对象。...直接就在进入和返回直接加日志: ?...我们看一下最终效果:有木有感觉自己写的代码很棒,嗯嗯嗯嗯,一加日志我们代码就是所有代码中最靓的码。 ? ---- 以上有什么问题可以联系一下我。

    1.9K30

    psrlog日志记录库的通用接口

    github.com/php-fig/fig… composer require psr/log 日志接口规范 本文制定了日志类库的通用接口规范。...框架以及CMS内容管理系统如有需要,可以对此接口进行扩展,但需遵循本规范, 这才能保证在使用第三方的类库文件时,日志接口仍能正常对接。...1.4 助手类和接口 Psr\Log\AbstractLogger 类使得只需继承它和实现其中的 log 方法,就能够很轻易地实现 LoggerInterface 接口,而另外八个方法就能够把记录信息和上下文信息传给它...在没有可用的日志记录器时, Psr\Log\NullLogger 接口可以为使用者提供一个备用的日志“黑洞”。不过,当上下文的构建非常消耗资源时,带条件检查的日志记录或许是更好的办法。...* * 日志信息变量中**可以**包含格式如 “{foo}” (代表foo) 的占位符, * 它将会由上下文数组中键名为 "foo" 的键值替代。

    81320

    架构设计 - 日志管理接口设计

    在后端代码中,日志无处不在,设计一套自己的日志管理代码,给框架提供一套好用的日志接口将大大方便代码的开发。...其中在日志管理代码的编写中,主要有以下难点: 1.数目不确定的入参函数编写 2.日志权限控制 3.日志输出形式。...接口设计: 1.提供三类日志打印形式:1)控制台打印信息,类似printf的接口封装             2)函数追踪接口,打印当前代码的文件名,函数名及行,以及一些设定的输出参数             ...3)日志打印函数,提供打印级别控制,且打印内容输出到日志文件中 2.提供日志级别控制:1)在打印日志时提供当前日志级别,代码依据级别进行控制打印           2)日志打印级别控制暂时使用配置文件...,后续可以通过通信接口进行实时修改 下面附上代码实现:DMLogManager.h 1 //======================================================

    66780

    统一接口设计及日志管理

    对系统中的关键操作进行记录至关重要,尤其是在对某些重要业务或数据信息进行溯源时 日志的记录越详细越好,但出于性能及业务等因素考虑,侧重点会各有不同 最基本的记录至少要包括如下信息: 1.所操作的接口 2....操作人 3.操作时间及设备信息 4.进行了何种操作 5.操作是否成功 日志记录方式无非就两种 1.高度代码耦合:在业务逻辑中直接调用日志记录接口 2.采用AOP方式:AOP方式能和业务逻辑解耦 第1种方式基本被淘汰...,介绍第2种方式 采用AOP方式记录日志,则要保证接口格式一致性,这样才能方便获取接口返回的相关信息 接口返回应该包括几个方面: 1.业务数据信息 2.执行状态 3.若失败还要返回错误码 4.若失败还要返回错误信息...同时为了方便统一日志记录,还应该在每个接口中返回具体的日志信息,不过不用展示出来 所以,基本格式应该如下: 1.成功时: { "content": { "sessionId":...(不用展示出来,只为了方便在aop中获取) 日志记录的其它相关信息,比如访问的是那个模块的哪个接口等,可以通过自定义注解方式来实现 package personal.changw.xiao.web.annotation

    2.8K20

    走进Java接口测试之日志框架Logback

    【摘要】 对于一个成熟的接口测试框架,日志管理这个是必不可少的。...在开发和调试阶段,日志可以帮助我们更快的定位问题;而在测试的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多测试框架会通过收集日志信息来对接口测试状态进行实时监控预警。...引言 前言 LogBack、Slf4j和Log4j之间的关系 默认日志Logback 配置详解 添加日志依赖 配置文件 多环境日志输出 单元测试 工程目录 总结 引言 对于一个成熟的接口测试框架,日志管理这个是必不可少的...在开发和调试阶段,日志可以帮助我们更快的定位问题;而在测试的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多测试框架会通过收集日志信息来对接口测试状态进行实时监控预警。...从上图可以看到,日志输出内容元素具体如下: 时间日期:精确到毫秒 日志级别:ERROR, WARN, INFO, DEBUG or TRACE Logger名:通常使用源代码的类名 分隔符:— 标识实际日志的开始

    59500

    分享一种接口日志格式

    概述 我们在项目的开发中会接触到各种各样的接口,有我们给他方提供接口,也有我们请求他方的接口。当我们进行接口排错时,接口日志显的尤为重要,比如,请求了哪些接口?耗时多久?状态码是什么? 场景 ?...比如我们要开发一个接口,该接口有 3 个子流程,每个子流程又分别请求了第三方的 HTTP 接口,然后再进行逻辑处理,返回结果,这时接口日志你会怎么记?...日志参数 假如我们需要记录以下参数: 请求信息 request 请求地址 url 请求体 body 请求方法 method 请求头 header 请求超时时间 ttl 响应信息 response 响应头...ttl 响应信息 response 响应头 header 状态码 status_code 状态信息 status_msg 响应体 body 执行时间 cost_seconds ps: 当请求多个接口时...请求时间 req_time 执行时间 cost_seconds 案例 我们提供一个对外接口,/user/create,这里面的逻辑是需要查询 3 个 HTTP 接口才能完成,那么日志记录应该是这样的。

    40020

    Python接口自动化之logging日志

    本文4091字,阅读约需11分钟 在上一篇Python接口自动化测试系列文章:Python接口自动化之pymysql数据库操作, 主要介绍pymysql安装、操作流程、语法基础及封装操作数据库类。...以下主要介绍日志相关概念及logging日志模块的操作流程。 ? 一 日志介绍 01 为什么需要日志?...使用logging日志模块,这些问题就能很容易地解决。 02 什么是日志日志就是用于记录系统运行时的信息,对一个事件的记录,也称为Log。 03 日志的用途是什么?...03 logging日志框架的组成 Logger:日志,暴露函数给应用程序,基于日志记录器和过滤器级别决定哪些日志有效。 LogRecord :日志记录器,将日志传到相应的处理器处理。...输出内容格式说明:日志级别:日志器名称:日志内容, 如果未自定义日志器名称,默认是root。

    1.4K10

    走进Java接口测试之日志框架Logback

    引言 对于一个成熟的接口测试框架,日志管理这个是必不可少的。...在开发和调试阶段,日志可以帮助我们更快的定位问题;而在测试的运维过程中,日志系统又可以帮助我们记录大部分的异常信息,通常很多测试框架会通过收集日志信息来对接口测试状态进行实时监控预警。...默认日志Logback 默认情况下,Spring Boot 会用 Logback 来记录日志,并用 INFO 级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了。...从上图可以看到,日志输出内容元素具体如下: 时间日期:精确到毫秒 日志级别:ERROR, WARN, INFO, DEBUG or TRACE 进程 ID 分隔符:--- 标识实际日志的开始 线程名:方括号括起来...-- 测试和开发环境日志级别为INFO/并且记录日志文件 --> <!

    1K20

    fastmock增加接口修订日志和版本记录功能

    背景:应公安网警要求,平台接口内容需要有严格的操作人记录,这样当接口出现了内容违规等问题时,才能方便配合网警排查发布带违规内容的接口的修改人。...再有之前有用户在群里问过是否有地方可以查询到接口的修改记录 经过评估,平台做了如下调整并于2024年1月6日完成功能设计和开发,具体内容如下: 平台项目和接口的删除功能由原来的真删除调整为逻辑删除,删除后的接口和项目仍然在数据库可查...接口的“新增”,“修改”和“删除”操作增加日志记录,记录操作人,操作类型和保存后的接口内容 接口列表页面,在操作列增加“接口修订记录”的按钮,可以跳转到修订记录页面,用户也可以查看这些记录且可以使用历史版本内容来覆盖接口内容

    16510

    我用注解实现接口的操作流水日志

    在项目中,我们会需要获取接口的操作日志。比如获取接口接口名、操作人,接口运行时间、所属的服务、接口的类型(增删改查)等等。...初级的做法是在接口方法执行完后将这些操作记录存入库中,这段代码写在接口中,但是这样违反了设计原则中的单一职责原则。常用的做法是使用AOP来做,在运行时动态的插入日志记录的代码。这里我是用注解来做。...创建日志记录表 首先我们来创建日志记录表: operation表 当然后编写实体类: 编写日志记录注解 我们先定义一个注解OperationLog 这个注解里面定义了几个参数: “opType:业务类型...opType为查询类型,所属的业务为会员服务,业务id为接口的参数id。...启动代码运行接口: 控制台打印了日志: 并且数据库也有了记录: 代码到这里就结束了,当然我们还可以在日志记录表中添加接口名的路径、以及接口的调用链等信息。

    42410

    【Spring Boot 源码学习】ConditionEvaluationReport 日志记录上下文初始化器

    那么本篇就来详细分析一下 ConditionEvaluationReportLoggingListener 【即 ConditionEvaluationReport 日志记录上下文初始化器】。...ConditionEvaluationReportLoggingListener 实现了 ApplicationContextInitializer 【即应用上下文初始化器接口...无参构造方法:初始化日志级别为 DEBUG【默认通过它实例化该上下文初始化器】 带 LogLevel 参数的构造方法:Assert.isTrue 是用于验证一个条件是否为真。...,继续翻看 GenericApplicationListener 接口源码: 继续翻看 SmartApplicationListener 接口源码: 从上述源码中,我们发现 GenericApplicationListener...GenericApplicationListener 是 Spring 框架中的一个接口,它扩展了 ApplicationListener 接口,暴露了更多的元数据,如支持的事件和源类型。

    10912

    SpringBoot应用中使用AOP记录接口访问日志

    本文主要讲述AOP在mall项目中的应用,通过在controller层建了一个切面来实现接口访问的统一日志记录。...比如我们的日志切面需要记录每个接口调用时长,就需要在接口调用前后分别记录当前时间,再取差值。...比如接口方法被调用的时候就是日志切面的连接点。 切点(Pointcut) 切点定义了通知功能被应用的范围。比如日志切面的应用范围就是所有接口,即所有controller层的接口方法。...添加AOP切面实现接口日志记录 添加日志信息封装类WebLog 用于封装需要记录的日志信息,包括操作的描述、时间、消耗时间、url、请求参数和返回结果等信息。...,在环绕通知中获取日志需要的信息,并应用到controller层中所有的public方法中去。

    1.7K30

    上下文

    所以业务上下文变更需要慎之又慎。 运行程序上下文 大家应该对一句话有印象:(进程/线程)上下文切换开销很大。这里的上下文一般指的就是运行程序的上下文。...这里的通信问题就是进程上下文切换开销大的缘故。 方法/类所在的上下文(作用域) 方法上下文可以理解为方法所在的作用域。类亦如此。 还有一些比较特殊的概念实际上也是和方法上下文相关。...从这个角度看,闭包实质上也是对上下文的一种操作手段:返回一个函数,该函数在当前上下文可以操作闭包上的上下文。...执行上下文:当函数或方法被调用时,它会创建一个执行上下文,这个上下文包括了局部变量、参数、返回地址等信息。在JavaScript等语言中,执行上下文还包括this的值。...比如: 调用扣库存的接口; 把内存分配好; 在界面上画一个转圈的效果,表示功能正在执行; 直接返回错误或者panic; …… 在做决策的步骤中,一个关键的步骤就是根据足够多的信息做决策。

    8910
    领券