В нашем проекте AEM 6.3 нам необходимо добавить дополнительный атрибут в сообщение журнала. По сути, мы хотим настроить формат сообщения. Итак, мы создали один файл регистрации в src / main / resources / logback.xml. Содержимое файла журнала выглядит следующим образом
<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/
Редактировать: Скопируйте / вставьте основные шаги из URL выше, если он больше не доступен:
Чтобы использовать 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}
Остальная логика зависит от вас! Объект запроса дает вам прямой доступ к следующему:
Есть какие-нибудь подсказки по вышеуказанной проблеме?