logback - s50600822/Notes GitHub Wiki

<!-- this file goes in src/main/resources/logback.xml -->
<configuration>
    <!-- if the system property LOCAL is defined, we'll use a human-friendly log format -->
    <if condition='isDefined("LOCAL")'>
        <then>
            <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
                    <pattern>%d [%thread] %-5level %logger{36} - %msg%n</pattern>
                </encoder>
            </appender>
        </then>
        <else>
            <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                    <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                        <appendLineSeparator>true</appendLineSeparator>
                        <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter" />
                    </layout>
                </encoder>
            </appender>
        </else>
    </if>

    <!-- overriding the default log level per class / package -->
    <!-- <logger name="com.example" level="INFO" /> -->

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

LogstashEncoder

<configuration>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"commit" : "${git.commit.id}", "customer":"X", "appname":"Y", "environment":"dev"}</customFields>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="stdout"/>
    </root>
</configuration>

With timestamp

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="stdout_json" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <fieldName>time</fieldName>
                    <!--
                    net.logstash.logback.composite.AbstractFormattedTimestampJsonProvider
                    -->
                    <pattern>[UNIX_TIMESTAMP_AS_STRING]</pattern>
                </timestamp>
                <pattern>
                    <omitEmptyFields>true</omitEmptyFields>
                    <pattern>
                        {
                        "timestamp": "%date{ISO8601}",
                        "logger": "%logger",
                        "level": "%level",
                        "thread": "%thread",
                        "message": "%message",
                        "traceId": "%mdc{traceId}",
                        "spanId": "%mdc{spanId}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>    </appender>
    <root level="info">
        <appender-ref ref="stdout_json" />
    </root>
</configuration>
⚠️ **GitHub.com Fallback** ⚠️