<!--
 ============LICENSE_START=======================================================
 Copyright (C) 2021 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" debug="false">
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <property name="queueSize" value="256" />
    <property name="maxFileSize" value="20MB" />
    <property name="maxHistory" value="30" />
    <property name="totalSizeCap" value="20MB" />

    <!-- log file names -->
    <property name="logName" value="cps" />

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

    <property name="debugPattern"
        value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />

    <property name="all-log-pattern"
      value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%thread|%X{RequestID}| %logger{50} - %msg%n" />

    <appender name="CONSOLE"
      class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${all-log-pattern}</Pattern>
        </layout>
    </appender>

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

<!--  Send logs to File & Rotate File  -->
<!--    <appender name="Debug"-->
<!--        class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--        <file>../log/${logName}.log</file>-->
<!--        <rollingPolicy-->
<!--            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!--            <fileNamePattern>${logName}.%d{yyyy-MM-dd}.%i.log.zip-->
<!--            </fileNamePattern>-->
<!--            <maxFileSize>${maxFileSize}</maxFileSize>-->
<!--            <maxHistory>${maxHistory}</maxHistory>-->
<!--            <totalSizeCap>${totalSizeCap}</totalSizeCap>-->
<!--        </rollingPolicy>-->
<!--        <encoder>-->
<!--            <pattern>${debugPattern}</pattern>-->
<!--        </encoder>-->
<!--    </appender>-->

<!--    <appender name="asyncDebug" class="ch.qos.logback.classic.AsyncAppender">-->
<!--        <queueSize>256</queueSize>-->
<!--        <appender-ref ref="Debug" />-->
<!--        <includeCallerData>true</includeCallerData>-->
<!--    </appender>-->

<!--    <logger name="org.onap.cps" level="DEBUG" additivity="false">-->
<!--        <appender-ref ref="asyncDebug" />-->
<!--    </logger>-->

<!--    <root level="INFO">-->
<!--        <appender-ref ref="asyncDebug" />-->
<!--    </root>-->

</configuration>
