首页 > 解决方案 > 从spring boot logback访问tomcat访问日志中的http请求头值

问题描述

在我的 Spring Boot 微服务模块中,我想通过 tomcat 访问日志从 http servlet 请求中捕获特定的请求标头值,并在我的 logback 日志记录中使用标头值。

我只使用 logback xml,没有 logback-access 文件。我的要求是在没有编程解决方案的情况下通过配置来实现这一点。我在“env”部分配置了我的 YAML 以获取 tomcat 访问日志。为此,我已将 YAML 的 Spring Boot 应用程序“env”部分配置为将 tomcat 访问日志附加到应用程序日志,如下所示:


环境:

server.tomcat.accesslog.enabled: true
server.tomcat.accesslog.directory: "/dev"
server.tomcat.accesslog.prefix: stdout
server.tomcat.accesslog.buffered: false
server.tomcat.accesslog.suffix:
server.tomcat.accesslog.file-date-format:
server.tomcat.accesslog.pattern: "[ACCESS] %l %t %D %F %B %S X-myHeader=%{X-myHeader}i"

我还在我的 logback 中添加了一个记录器来打印 tomcat 访问日志。通过此更改,我传入的 Request 标头值将作为每个请求的单独行打印到 Spring Boot 日志中。相反,我想将此标头值作为 logback xml 中的属性访问,并将其与应用程序属性一起记录,所有这些都在日志中的一行中。

有没有办法将“server.tomcat.accesslog.pattern”作为属性访问并使其值在 logback xml 中可用,我只是在想。例如,在 logback xml 中,我尝试声明这样的属性:我尝试了这个,但 spring boot 日志状态“X-myHeader”未定义。

有没有人成功地尝试过这个,我想知道我在这里缺少什么。我的要求是在没有编程解决方案的情况下通过配置来实现这一点。

标签: spring-bootlogbackaccess-log

解决方案


推荐阅读