在AEM 6.3项目中,我们需要在日志消息中添加其他属性。基本上,我们要自定义消息格式。因此,我们在src / main / resources / logback.xml下创建了一个logback文件。日志文件的内容如下
<BrowserRouter>
<div>
<Route exact={true} path='/' render={() => (
<div>
<AddDetails />
</div>
)}/>
<Route exact={true} path='details' render={() => (
<div>
<ShowDetails />
</div>
)}/>
</div>
</BrowserRouter>
在Apache Sling日志记录配置下,我们创建了一个日志配置,如下所示,其中“追加名称”为“相同名称”。
<configuration>
<appender name="SampleProject.log"
class="ch.qos.logback.core.FileAppender">
<file>SampleProject.log</file>
<append>true</append>
<encoder>
<pattern>%d %-5level %X{sling.userId:-NA} [%thread] %logger{30}
%marker- %msg %n</pattern>
<immediateFlush>true</immediateFlush>
</encoder>
</appender>
<logger name="org.wc.project" level="INFO"/>
</configuration>
但是,自定义消息格式现在显示在SampleProject.log中。任何人都可以提供相同的指针吗?
答案 0 :(得分:0)
意识到这是一个相当老的线程,但是我过去通过编写用于吊索的MDC过滤器并使用MDC日志记录模式更新过滤器来完成类似的工作。
我在这里写了一篇有关如何完成此操作的分步文章:
https://blogs.perficientdigital.com/2018/09/24/customized-logging-using-slf4j-mdc-in-aem/
编辑: ,以防无法访问,请从上面的网址复制/粘贴基本步骤:
要使用MDC,有两个主要步骤: -填充MDC对象(地图) -引用MDC属性(记录模式)
在AEM中,每个请求都流经过滤器链,这意味着我们需要尽早在过滤器中填充MDC变量,以便以后可以成功记录这些变量。最简单的方法是将自定义过滤器的范围设置为请求级别,顺序为0:
/**
- The SlingFilterScope.REQUEST is important as MDC needs to be configured prior
- to any logger being executed in the page rendering.
*/
@SlingFilter(
label = "Sample MDC Filter",
description = "Sample implementation of custom MDC properties.",
order = 0,
scope = SlingFilterScope.REQUEST)
然后,您需要将org.slf4j.MDC导入您的类并填充它。
MDC.put(varName,varValue);
填充变量后,您可以通过标准的日志记录过滤器进行访问:
%X{varName:-DefaultValueIfNull}
其余逻辑取决于您!请求对象使您可以直接访问以下内容: