Я сейчас играю с 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 не поддерживается и не будет поддерживаться.
Кто-нибудь знает какой-либо другой способ настройки вывода?