如何在AEM的access.log或request.log中打印http头cookie?

问题描述 投票:0回答:1

出于调试目的,我想在access.log或request.log中打印一个特定的cookie值。一种方法是,在dispatcherServlet中,为SlingHttpRequest.getCookies()添加一个记录器。但是这个调试是需要在Production中进行的,我不能进行java代码的修改和部署。

我阅读了 文件 并试图改变 org.apache.sling.commons.log.pattern 财产 org.apache.sling.commons.log.LogManager.factory.config 在configManager的access.log中,像这样。

{0,date,dd.MM.yyyy HH:mm:ss.SSS} *{4}* [{2}] {3} {5} "%cookie{login-token}"

这没有任何帮助。能够看到日期时间戳的变化,{2}。{3}等都在打印。但如愿以偿,却没有打印出cookie值。

如何在AEM日志文件中打印http头中的cookie值?

apache logging aem aem-6
1个回答
0
投票

我不认为你所提到的整个文档是支持OOB的。AEM中的模式格式特别指向了 模式布局 文档的部分。作为其中的一部分,不支持请求cookies。

请求cookie部分是专门存在于模式布局的 登录访问 该节规定如下

logback-access中的PatternLayout的配置方式与经典的PatternLayout基本相同。然而,它具有额外的转换指定器,适合记录仅在HTTP servlet请求和HTTP servlet响应中可用的特定信息位。

也就是说 吊装带记录文件 提到使用Sling扩展来支持slf4j MDC,它可以用来暴露一些请求变量,包括cookie。摘自下面的文档

过滤器允许配置从请求cookie、头和参数中提取数据。查找配置名称为'Apache Sling Logging MDC Inserting Filter'的配置,以了解指定头、cookie、param名称的细节。

enter image description here

一旦MDC bundle被 下载 并添加到你的实例中,你可以使用日志回传模式来代替经典模式的日志格式。下图所示的doco中的例子。

%d{dd.MM.yyyy HH:mm:ss.SSS} *%p* [%X{req.remoteHost}] [%t] %c %msg%n

希望能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.