Pull to refresh

Comments 9

вы решили проблему не с той стороны: не проще ли писать логи в json формате, как собственно и положено делать в 2020 году?
Спорное заявление!
Json избыточен. Форматирование отнимает ресурсы у биснеса. Логирование в консоль нечитаемое. Как то так …

Вот ни разу не спорное. json per line формат широко распространен и супер-удобен при централизации логов. Настроить логирование в json в том-же spring-boot — дело двух минут:


build.gradle.kts:


configurations {
    all {
        exclude("org.springframework.boot", "spring-boot-starter-logging")
    }
}

dependencies {
  implementation("org.springframework.boot:spring-boot-starter-log4j2")
}

log4j2-spring.xml:


<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <JsonLayout compact="true" eventEol="true" properties="false" stacktraceAsString="true">
                <!-- Zipkin
                <KeyValuePair key="trace" value="$${ctx:X-B3-TraceId:-}"/>
                <KeyValuePair key="span" value="$${ctx:X-B3-SpanId:-}"/>
                <KeyValuePair key="parent" value="$${ctx:X-B3-ParentSpanId:-}"/>
                <KeyValuePair key="exportable" value="$${ctx:X-Span-Export:-}"/>
                -->
            </JsonLayout>
        </Console>
    </Appenders>
    <Loggers>

        <Logger name="io.micrometer" level="warn"/>
        <Logger name="org.apache.kafka" level="warn"/>
        <Logger name="org.hibernate.validator" level="warn"/>
        <Logger name="org.springframework" level="warn"/>

        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
Имхо, полумера т.к. не только стектрейсы многострочные. Переводы строк могут вылезти откуда угодна – пользовательский ввод, сторонние библиотеки и т.д. Замарачиваться с разбором многострочных логов все равно придется.
Системы сбора логов умеют их «склеивать» таким образом, что несколько строк отображаются в итоге как одно событие
+ многострочное событие порой выглядит намного читабельнее
В кибану, например, попадает только первая строка сообщения.
а спланк всё понимает, но по-моему строки больше 10к обрезает по дефолту
Sign up to leave a comment.