出于调试目的,我想在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值?
我不认为你所提到的整个文档是支持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名称的细节。
一旦MDC bundle被 下载 并添加到你的实例中,你可以使用日志回传模式来代替经典模式的日志格式。下图所示的doco中的例子。
%d{dd.MM.yyyy HH:mm:ss.SSS} *%p* [%X{req.remoteHost}] [%t] %c %msg%n
希望能帮到你。