Java SLF4J → Logback → Logstash → Datadog — хост, служба и источник?

Приложение Java, созданное с помощью Gradle, с реализацией SLF4J и Logback, экспортом с помощью Logstash в безагентное ведение журнала Datadog.

Не удается получить свойства host, service или source для передачи:

 У меня есть приложение Java, созданное с помощью Gradle, реализация SLF4J и Logback, экспорт с помощью Logstash в безагентное ведение журнала Datadog. Кажется, что я не могу правильно передать свойства хоста или службы, а также исходный тег. Хост и служба  пусто; источник не определен

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:

Кроме того, в самой документации для logstash-logback-encoder указано:

По умолчанию каждое свойство контекста Logback (ch.qos.logback.core.Context) отображается как поле в LoggingEvent.

По умолчанию каждое свойство контекста Logback (ch.qos.logback.core.Context) будет отображаться как поле в LoggingEvent.

Итак, как добавить свойство в контекст Logback?


person Charney Kaye    schedule 23.02.2021    source источник


Ответы (1)


Это то, что у меня есть до сих пор. Все, кроме source.

Отправка env, имени хоста и сервиса в datadog

import ch.qos.logback.classic.LoggerContext;

// Add context to logs
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.setPackagingDataEnabled(true);
lc.putProperty("source", "java");
lc.putProperty("service", "thing-doer");
lc.putProperty("host", "prd1.do.things"));
lc.putProperty("env", "production");
person Charney Kaye    schedule 24.02.2021