<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <springProperty scope="context" name="SPRING_APPLICATION_NAME" source="spring.application.name"/>

    <springProfile name="json-logging">
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter"/>
                <timestampFormat>yyyy-MM-dd HH:mm:ss.SSS</timestampFormat>
                <appendLineSeparator>true</appendLineSeparator>
            </layout>
        </appender>
    </springProfile>
    <springProfile name="loki-logging">
        <appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender">
            <http>
                <url>https://telemetry.w9r.de:3100/loki/api/v1/push</url>
                <auth>
                    <username>w9r</username>
                    <password>x3G3PMPVUav8WmUckp.v6U-bxPdnXD</password>
                </auth>
            </http>
            <format>
                <label>
                    <pattern>app=${SPRING_APPLICATION_NAME},instance=${HOSTNAME},level=%level</pattern>
                </label>
                <message>
                    <pattern>l=%level h=${HOSTNAME} c=%logger t=%thread traceid=%X{traceId:--} spanid=%X{spanId:--} msg="%msg" %ex</pattern>
                </message>
                <sortByTime>true</sortByTime>
            </format>
        </appender>

        <root level="INFO">
            <appender-ref ref="LOKI" />
        </root>
    </springProfile>
    <springProfile name="!json-logging">
        <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    </springProfile>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>