Приложение Java, созданное с помощью Gradle, с реализацией SLF4J и Logback, экспортом с помощью Logstash в безагентное ведение журнала Datadog.
Не удается получить свойства host
, service
или source
для передачи:
build.gradle
implementation 'ch.qos.logback:logback-classic:1.2.3'
implementation 'net.logstash.logback:logstash-logback-encoder:6.6'
implementation 'org.slf4j:log4j-over-slf4j:1.7.13'
implementation 'org.slf4j:slf4j-api:1.7.5'
logback.xml
Обратите внимание, где я включил теги <host>
и <service>
. Я также пробовал <property name=".." value="..">
и <KeyValuePair key="service" value="java-app" />
безрезультатно.
<appender name="JSON_TCP" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<remoteHost>intake.logs.datadoghq.com</remoteHost>
<service>my-favorite-service</service>
<host>${HOSTNAME}</host>
<port>10514</port>
<keepAliveDuration>20 seconds</keepAliveDuration>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<prefix class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>abc123abc123abc123abc123abc123 %mdc{keyThatDoesNotExist}</pattern>
</layout>
</prefix>
</encoder>
</appender>
Документы
Вот документы, которые я читаю на Datadog:
https://docs.datadoghq.com/logs/log_collection/java/?tab=log4j#agentless-logging
https://docs.datadoghq.com/tracing/connect_logs_and_traces/java?tab=log4j2
https://docs.datadoghq.com/logs/log_collection/?tab=host< /а>
https://docs.datadoghq.com/getting_started/tagged/unified_service_tagging/?tab=kubernetes
Кроме того, в самой документации для logstash-logback-encoder указано:
По умолчанию каждое свойство контекста Logback (ch.qos.logback.core.Context) отображается как поле в LoggingEvent.
По умолчанию каждое свойство контекста Logback
(ch.qos.logback.core.Context)
будет отображаться как поле в LoggingEvent.
Итак, как добавить свойство в контекст Logback?