当前位置: 首页 > 知识库问答 >
问题:

HTTP请求的Spring AOP日志记录

东方和志
2023-03-14

我试图通过aop在控制器中记录超文本传输协议请求。但是,在方面代码中,如果我

    httpServletRequest.getInputStream()

那么请求数据将无法在主流中检索。

所以,我创建了另一个公共方法,在控制器中传递请求字符串

    public String processRequest(String data){...}

这种方法是记录“数据”的切入点。

但问题是,这种方法的切入点似乎无法通过Spring识别,这种方法没有日志记录。我需要帮助。

下面是aop的定义

     <bean id="myLogger" class="com.my.MyLogger" />

<aop:config>
    <aop:aspect id="Log" ref="myLogger">
        <aop:around  method="log" pointcut="execution(public * com.my.controller.processRequest(..))" />
    </aop:aspect>
</aop:config>

共有1个答案

瞿博学
2023-03-14

SpringAOP默认使用AOP代理。因此,您的原始bean使用生成的代理bean进行包装,所有“外部”调用都通过代理进行。内部方法调用(在同一个bean中)绕过代理。

这里有很好的解释:http://static.springsource.org/spring/docs/2.5.5/reference/aop.html#aop-理解aop代理

 类似资料:
  • 我有一个Spring Rest控制器,可以满足以下要求: 我想在日志中将我的12223334455号替换为1******4455号,我已经为其制定了一个方法: 但这个请求并不是在句柄中,而是在控制器内部的某个地方。使用该方法屏蔽我的号码的最佳方法是什么?

  • 我使用Jackson/JSON设置了SpringREST,一切正常。 但是我故意在消息结构中引入了一个错误,导致400-错误请求。但是服务器上没有日志输出。我期望的错误会是类似“杰克逊未知属性异常”之类的东西,但它被捕获并将400错误发送到客户端,但服务器上没有异常日志。 我不想清楚地调试服务器上的一切,但我希望像这样的Spring网络级异常清楚地标记为错误。 正确的方法是什么? 谢谢

  • Webpack开发服务器代理配置留档: https://webpack.js.org/configuration/dev-server/#devserver-代理 表示它使用http代理中间件: https://github.com/chimurai/http-proxy-middleware#http-代理事件 使用上述链接中记录的功能,我可以执行以下操作: 我的问题是,尽管其他一切都很好——我

  • 我试图在flask应用程序上记录post请求,如下所示: 我这样做是因为我怀疑有时我会在POST上得到一个格式错误的JSON对象。我看到的问题是日志包含一个截断的请求体——它似乎被夹在中间... 我不能放日志摘要,因为它是敏感数据。。为什么请求被截断?我做错了吗? 谢谢

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 这是配置jetty日志的后续问题。有没有什么属性可以给出请求所花费的时间? 123.4.5.6---[27/Aug/2004:10:16:17 0000]“GET/jetty/tut/XmlConfiguration.html HTTP/1.1”200 76793”http://localhost:8080/jetty/tut/logging.html“Mozilla/5.0(X11;U;Linu