Несколько маркеров в макете шаблона входа - PullRequest
0 голосов
/ 07 сентября 2018

Я сейчас играю с Logback / Markers и не нашел способа отформатировать вывод маркеров. Из-за проблем с MDC в сочетании с Play я хотел бы неправильно использовать маркеры для печати имени пользователя, correlationId и хоста с каждым оператором журнала.

Я устанавливаю два маркера, "хост" и "пользователь" в моем примере

trait RequestMarkerContext {
  implicit def requestHeaderToMarkerContext(implicit request: RequestHeader): MarkerContext = {
    import net.logstash.logback.marker.Markers._

    val markers: java.util.Map[String, String] = new util.HashMap()
    markers.put("user", "testuser")
    markers.put("host", "somehost")

    val value: LogstashMarker = appendEntries(markers)
    MarkerContext(value)
  }
}

И когда я добавляю их в макет моего приложения.

<layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} [%level] %logger - %marker %msg%n</Pattern>
</layout>

они печатаются в формате JSON следующим образом:

2018-09-07T15:16:45.462+0200 [warn] controllers.HomeController - {host=somehost, user=testuser} ...

но я бы предпочел напечатать их так, потому что это будет соответствовать остальной части сообщения журнала:

2018-09-07T15:16:45.462+0200 [warn] controllers.HomeController - host='somehost', user='testuser' ... 

Есть ли способ изменить расположение маркеров? Я нашел этот комментарий , в котором говорится, что вывод не в формате JSON не поддерживается и не будет поддерживаться.

Кто-нибудь знает какой-либо другой способ настройки вывода?

1 Ответ

0 голосов
/ 09 сентября 2018

Я только что понял, как это работает, но это не очень красиво.

implicit def requestHeaderToMarkerContext(implicit request: RequestHeader): MarkerContext = {
    import net.logstash.logback.marker.Markers._

    val username = "john"
    val host = "127.0.0.1"

    val message = s"username='$username', host='$host',"
    val value: LogstashMarker = appendFields(message)

    MarkerContext(value)
}
...