<!--
 ============LICENSE_START=======================================================
 Copyright (C) 2021-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>
