AEM 6.3使用追加器和slf4j自定义日志消息



在我们的AEM 6.3项目中,我们需要在日志消息中添加其他属性。基本上,我们要自定义消息格式。所以我们在src/main/resources/logback.xml下创建了一个logback文件。日志文件的内容如下

<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>

在 Apache Sling 日志记录配置下,我们创建了一个日志配置,如下所示,其"同名"作为追加器名称。

org.apache.sling.commons.log.file="SampleProject.log"
org.apache.sling.commons.log.level="info"
org.apache.sling.commons.log.logger.paatern ="org.wc.project"
org.apache.sling.commons.log.pattern="{0,date,dd.MM.yyyy HH:mm:ss.SSS} 
*{4}* [{2}] {3} {5}"

但是自定义的消息格式现在显示在 SampleProject.log 中。任何人都可以提供任何相同的指示。

意识到这是一个相当古老的线程,但我过去通过编写用于吊索的 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}

其余的逻辑取决于你! 请求对象允许您直接访问以下内容:

  • 资源解析器(访问JCR(
  • 请求标头
  • 您可以使用 RequestWrapper 来自定义
  • 请求饼干
  • 请求参数

最新更新