跨多个 Spring 引导项目的通用请求日志记录 JAR
Common Request Logging JAR Across Multiple Spring Boot Projects
我正在尝试构建一个通用的请求日志记录 jar,它可以用作跨多个 Spring 引导项目的依赖项以实现标准化请求日志记录。
例子
- 项目 A 有 2 个控制器端点
- 项目 B 有 10 个控制器端点
将日志记录 jar 作为依赖项添加到项目 A 和 B 后,当控制器处理请求时,将生成以下日志消息:
url="/api/locations", requestMethod="GET", ip="192.168.1.23", userAgent="curl/7.35.0"
我正在尝试尽量减少或消除对项目 A 和 B 中任何实际代码更改的需要。
我需要实现一个拦截器来完成这个吗? SpringAOP?
听起来这里有几个主题。
- 共享配置。
我所做的是在 src/main/resources
下创建一个带有 logback-spring.xml
配置文件的 JAR。构建它(或任何适合您的配置)并将其作为您项目中的依赖项。
- 一致的日志记录。
在这里您可以将自己的 javax.servlet.Filter 实现为 spring 组件,或者使用 Spring 提供的 CommonsRequestLoggingFilter
。将它实例化为 @Configuration
class 中的 @Bean
然后就可以了。
注意:IIRC,这不会记录响应或请求主体。
我正在尝试构建一个通用的请求日志记录 jar,它可以用作跨多个 Spring 引导项目的依赖项以实现标准化请求日志记录。
例子
- 项目 A 有 2 个控制器端点
- 项目 B 有 10 个控制器端点
将日志记录 jar 作为依赖项添加到项目 A 和 B 后,当控制器处理请求时,将生成以下日志消息:
url="/api/locations", requestMethod="GET", ip="192.168.1.23", userAgent="curl/7.35.0"
我正在尝试尽量减少或消除对项目 A 和 B 中任何实际代码更改的需要。
我需要实现一个拦截器来完成这个吗? SpringAOP?
听起来这里有几个主题。
- 共享配置。
我所做的是在 src/main/resources
下创建一个带有 logback-spring.xml
配置文件的 JAR。构建它(或任何适合您的配置)并将其作为您项目中的依赖项。
- 一致的日志记录。
在这里您可以将自己的 javax.servlet.Filter 实现为 spring 组件,或者使用 Spring 提供的 CommonsRequestLoggingFilter
。将它实例化为 @Configuration
class 中的 @Bean
然后就可以了。
注意:IIRC,这不会记录响应或请求主体。