<!--
  ============LICENSE_START=======================================================
  policy-api
  ================================================================================
  Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
  ================================================================================
  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.
  ============LICENSE_END=========================================================
  -->

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

    <property name="logDir" value="${POLICY_LOGS}" />

    <property name="errorLog" value="error" />
    <property name="debugLog" value="debug" />
    <property name="networkLog" value="network" />

    <property name="metricLog" value="metric" />
    <property name="transactionLog" value="audit" />

    <property name="debugPattern"
        value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%level|%logger{0}|%thread] %msg%n" />
    <property name="errorPattern" value="${debugPattern}" />
    <property name="networkPattern"
        value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%t]%m%n" />

    <property
        name="mpPreamble"
        value="%X{RequestID}|%X{InvocationID}|%X{ServiceName}|%X{PartnerName}" />

    <property
        name="mpTime"
        value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{ElapsedTime}" />

    <property
        name="mpLine1"
        value="%X{ServiceInstanceID}|%X{VirtualServerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}" />

    <property
        name="mpLine2"
        value="%X{InstanceUUID}|%X{Severity}|%X{TargetEntity}|%X{TargetServiceName}|%X{Server}|%X{ServerIPAddress}" />

    <property
        name="mpLine3"
        value="%X{ServerFQDN}|%X{ClientIPAddress}|%X{ProcessKey}|%X{RemoteHost}|%X{AlertSeverity}" />

    <property
        name="mpLine4"
        value="%X{TargetVirtualEntity}|%level|%thread| %msg%n" />


    <property name="metricPattern"
        value="{$mpPreamble}|{$mpTime}|{$mpLine1}|{$mpLine2}|{$mpLine3}|$mpLine4" />

    <property name="transactionPattern" value="${metricPattern}" />

    <appender name="ErrorOut"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${errorLog}.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${errorLog}.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <encoder>
            <pattern>${errorPattern}</pattern>
        </encoder>
    </appender>

    <appender name="AsyncErrorOut"
        class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="ErrorOut" />
    </appender>

    <appender name="DebugOut"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${debugLog}.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${debugLog}.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${debugPattern}</pattern>
        </encoder>
    </appender>

    <appender name="AsyncDebugOut"
        class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="DebugOut" />
    </appender>

    <appender name="NetworkOut"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${networkLog}.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${networkLog}.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${networkPattern}</pattern>
        </encoder>
    </appender>

    <appender name="AsyncNetworkOut"
        class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="NetworkOut" />
    </appender>

    <appender name="MetricOut"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${metricLog}.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${metricLog}.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${metricPattern}</pattern>
        </encoder>
    </appender>

    <appender name="AsyncMetricOut"
        class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="MetricOut" />
    </appender>

    <appender name="TransactionOut"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${transactionLog}.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${logDir}/${transactionLog}.%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${transactionPattern}</pattern>
        </encoder>
    </appender>

    <appender name="AsyncTransactionOut"
        class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="TransactionOut" />
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%level|%logger{0}|%thread] %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="AsyncStdOut" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="STDOUT" />
    </appender>


    <logger name="network" level="INFO" additivity="false">
        <appender-ref ref="AsyncNetworkOut" />
    </logger>

    <logger name="org.eclipse.jetty.server.RequestLog" level="info"
        additivity="false">
        <appender-ref ref="AsyncNetworkOut" />
        <appender-ref ref="AsyncStdOut" />
    </logger>

    <logger name="org.eclipse.jetty" level="ERROR" />

    <root level="INFO">
        <appender-ref ref="AsyncDebugOut" />
        <appender-ref ref="AsyncErrorOut" />
        <appender-ref ref="AsyncMetricOut" />
        <appender-ref ref="AsyncTransactionOut" />
        <appender-ref ref="AsyncStdOut" />
    </root>

</configuration>
