<!--
# Copyright © 2018 Amdocs, Bell Canada, AT&T
#
# 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.
-->

<configuration scan="true" scanPeriod="3 seconds" debug="false">
  <include resource="org/springframework/boot/logging/logback/base.xml" />
  <property name="logDir" value="/var/log/onap" />
  <property name="componentName" value="AAI-ML"></property>

  <!-- default eelf log file names -->
  <property name="generalLogName" value="error" />
  <property name="metricsLogName" value="metrics" />
  <property name="auditLogName" value="audit" />
  <property name="debugLogName" value="debug" />

  <property name="errorLogPattern"
	    value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|ModelLoader|%mdc{PartnerName}|%logger||%.-5level|%msg%n" />
  <property name="auditMetricPattern" value="%m%n" />

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

  <!-- Example evaluator filter applied against console appender -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>

  <!-- ============================================================================ -->
  <!-- EELF Appenders -->
  <!-- ============================================================================ -->

  <!-- The EELFAppender is used to record events to the general application
       log -->

  <appender name="EELF"
	    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${generalLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>60</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${errorLogPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
    <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
    </filter>
    <queueSize>256</queueSize>
    <appender-ref ref="EELF" />
  </appender>

  <appender name="EELFAudit"
	    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${auditLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>60</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${auditMetricPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFAudit" />
  </appender>

  <appender name="EELFMetrics"
	    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${metricsLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>60</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${auditMetricPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFMetrics" />
  </appender>

  <appender name="EELFDebug"
	    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${debugLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>60</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${errorLogPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFDebug" />
    <includeCallerData>true</includeCallerData>
  </appender>

  <!-- ============================================================================ -->
  <!-- EELF loggers -->
  <!-- ============================================================================ -->
  <logger name="com.att.eelf" level="info" additivity="false">
    <appender-ref ref="asyncEELF" />
    <appender-ref ref="asyncEELFDebug" />
  </logger>
  <logger name="com.att.eelf.audit" level="info" additivity="false">
    <appender-ref ref="asyncEELFAudit" />
  </logger>
  <logger name="com.att.eelf.metrics" level="info" additivity="false">
    <appender-ref ref="asyncEELFMetrics" />
  </logger>

  <!-- Spring related loggers -->
  <logger name="org.springframework" level="WARN" />
  <logger name="org.springframework.beans" level="WARN" />
  <logger name="org.springframework.web" level="WARN" />
  <logger name="com.blog.spring.jms" level="WARN" />

  <logger name="com.att" level="INFO" />

  <!-- Model Loader loggers -->
  <logger name="org.openecomp.modelloader" level="INFO" />

  <!-- Other Loggers that may help troubleshoot -->
  <logger name="net.sf" level="WARN" />
  <logger name="org.apache.commons.httpclient" level="WARN" />
  <logger name="org.apache.commons" level="WARN" />
  <logger name="org.apache.coyote" level="WARN" />
  <logger name="org.apache.jasper" level="WARN" />

  <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
       May aid in troubleshooting) -->
  <logger name="org.apache.camel" level="WARN" />
  <logger name="org.apache.cxf" level="WARN" />
  <logger name="org.apache.camel.processor.interceptor" level="WARN" />
  <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
  <logger name="org.apache.cxf.service" level="WARN" />
  <logger name="org.restlet" level="WARN" />
  <logger name="org.apache.camel.component.restlet" level="WARN" />

  <!-- logback internals logging -->
  <logger name="ch.qos.logback.classic" level="WARN" />
  <logger name="ch.qos.logback.core" level="WARN" />

  <root>
  <appender-ref ref="asyncEELF" />
  <!-- <appender-ref ref="asyncEELFDebug" /> -->
</root>

</configuration>