<!--
 ============LICENSE_START=======================================================
 Copyright (C) 2022 Nordix Foundation
 ================================================================================
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

 SPDX-License-Identifier: Apache-2.0
 ============LICENSE_END=========================================================
-->

<configuration scan="true" scanPeriod="30 seconds" debug="false">

    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

    <springProperty scope="context" name="springAppName" source="spring.application.name"/>
    <springProperty scope="context" name="username" source="security.auth.username"/>
    <springProperty scope="context" name="loggingFormat" source="logging.format"/>

    <property name="currentTimeStamp" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC}"/>

    <appender name="jsonConsole"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <omitEmptyFields>true</omitEmptyFields>
                    <pattern>
                        {
                        "logTimeStamp": "${currentTimeStamp:-}",
                        "logTypeName": "",
                        "logLevel": "%level",
                        "traceId": "%X{traceId:-}",
                        "statusCode": "",
                        "principalId": "${username:-}",
                        "serviceName": "${springAppName:-}",
                        "message": "%message",
                        "spanId": "%X{spanId:-}",
                        "processId": "${PID:-}",
                        "threadName": "%thread",
                        "class": "%logger{40}",
                        "exception": "%wEx"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

    <appender name="asyncConsole" class="ch.qos.logback.classic.AsyncAppender">
        <if condition='property("loggingFormat").equalsIgnoreCase("json")'>
            <then>
                <appender-ref ref="jsonConsole"/>
            </then>
            <else>
                <appender-ref ref="CONSOLE"/>
            </else>
        </if>
    </appender>

    <root level="INFO">
        <appender-ref ref="asyncConsole"/>
    </root>

</configuration>
