<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START==========================================
  ONAP Portal SDK
  ===================================================================
  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
  ===================================================================
 
  Unless otherwise specified, all software contained herein is licensed
  under the Apache License, Version 2.0 (the “License”);
  you may not use this software 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.
 
  Unless otherwise specified, all documentation contained herein is licensed
  under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
  you may not use this documentation except in compliance with the License.
  You may obtain a copy of the License at
 
              https://creativecommons.org/licenses/by/4.0/
 
  Unless required by applicable law or agreed to in writing, documentation
  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============================================
 
  ECOMP is a trademark and service mark of AT&T Intellectual Property.
  -->
<configuration scan="true" scanPeriod="3 seconds" debug="true">
  <!-- 
  Logback files for the ONAP Portal SDK Application "epsdk-app-os"
  are created in directory ${catalina.base}/logs/epsdk_app_os;
  e.g., apache-tomcat-8.0.35/logs/epsdk_app_os/application.log  
  -->
  <!--<jmxConfigurator /> -->

  <!--  specify the component name -->
  <property name="componentName" value="ep_sdk_app"></property>
  
  <!--  specify the base path of the log directory -->
  <property name="logDirPrefix" value="${catalina.base}/logs"></property>
  
  <!-- The directories where logs are written -->
  <property name="logDirectory" value="${logDirPrefix}/${componentName}" />
  <!-- Can easily relocate debug logs by modifying this path. -->
  <property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" />
  
  <!--  log file names -->
  <property name="generalLogName" value="application" />
  <property name="errorLogName" value="error" />
  <property name="metricsLogName" value="metrics" />
  <property name="auditLogName" value="audit" />
  <property name="debugLogName" value="debug" />
  <!--
  These loggers are not used in code (yet). 
  <property name="securityLogName" value="security" />
  <property name="policyLogName" value="policy" />
  <property name="performanceLogName" value="performance" />
  <property name="serverLogName" value="server" />
   -->
  
  <!-- 1610 Logging Fields Format Revisions --> 
  <property name="auditLoggerPattern"
	value="%X{AuditLogBeginTimestamp}|%X{AuditLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />

  <property name="metricsLoggerPattern"
	value="%X{MetricsLogBeginTimestamp}|%X{MetricsLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />

  <property name="errorLoggerPattern"
	value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ClassName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />

  <property name="defaultLoggerPattern"
	value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ClassName}| %msg%n" />

  <!-- use %class so library logging calls yield their class name -->
  <property name="applicationLoggerPattern"
	value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%class{36}| %msg%n" />

  <!-- Example evaluator filter applied against console appender -->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${defaultLoggerPattern}</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"> 
      <!-- daily rollover --> 
      <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 
 
      <!-- keep 30 days' worth of history capped at 3GB total size --> 
      <maxHistory>30</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap> 
 
    </rollingPolicy>
    <encoder>
      <pattern>${applicationLoggerPattern}</pattern>
    </encoder>
    <filter class="org.onap.portalapp.util.CustomLoggingFilter" />
  </appender>
  
  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <!-- Class name is part of caller data -->
    <includeCallerData>true</includeCallerData>
    <appender-ref ref="EELF" />
  </appender>

  <!-- EELF Security Appender. This appender is used to record security events 
    to the security log file. Security events are separate from other loggers 
    in EELF so that security log records can be captured and managed in a secure 
    way separate from the other logs. This appender is set to never discard any 
    events. -->
  <!--     
  <appender name="EELFSecurity"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${securityLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <discardingThreshold>0</discardingThreshold>
    <appender-ref ref="EELFSecurity" />
  </appender>
   -->
   
  <!-- EELF Performance Appender. This appender is used to record performance 
    records. -->
  <!--
  <appender name="EELFPerformance"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${performanceLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <outputPatternAsHeader>true</outputPatternAsHeader>
      <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFPerformance" />
  </appender>
  -->

  <!-- EELF Server Appender. This appender is used to record Server related 
    logging events. The Server logger and appender are specializations of the 
    EELF application root logger and appender. This can be used to segregate Server 
    events from other components, or it can be eliminated to record these events 
    as part of the application root log. -->
  <!--
  <appender name="EELFServer"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${serverLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFServer" />
  </appender>
   -->
  
  <!-- EELF Policy Appender. This appender is used to record Policy engine 
    related logging events. The Policy logger and appender are specializations 
    of the EELF application root logger and appender. This can be used to segregate 
    Policy engine events from other components, or it can be eliminated to record 
    these events as part of the application root log. -->
  <!--
  <appender name="EELFPolicy"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${policyLogName}.log</file>
    <rollingPolicy
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip
      </fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>9</maxIndex>
    </rollingPolicy>
    <triggeringPolicy
      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>${defaultPattern}</pattern>
    </encoder>
  </appender>
  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFPolicy" />
  </appender>
  -->
  
  <!-- EELF Audit Appender. This appender is used to record audit engine 
    related logging events. The audit logger and appender are specializations 
    of the EELF application root logger and appender. This can be used to segregate 
    Policy engine events from other components, or it can be eliminated to record 
    these events as part of the application root log. -->
    
  <appender name="EELFAudit"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${auditLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- daily rollover --> 
      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 
 
      <!-- keep 30 days' worth of history capped at 3GB total size --> 
      <maxHistory>30</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap> 
 
    </rollingPolicy>
    <encoder>
         <pattern>${auditLoggerPattern}</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"> 
      <!-- daily rollover --> 
      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 
 
      <!-- keep 30 days' worth of history capped at 3GB total size --> 
      <maxHistory>30</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap> 
 
    </rollingPolicy>
    <encoder>
      <pattern>${metricsLoggerPattern}</pattern>
    </encoder>
  </appender>
  
  
  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFMetrics"/>
  </appender>
   
  <appender name="EELFError"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/${errorLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- daily rollover --> 
      <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 
 
      <!-- keep 30 days' worth of history capped at 3GB total size --> 
      <maxHistory>30</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap> 
 
    </rollingPolicy>
    <encoder>
      <pattern>${errorLoggerPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFError"/>
  </appender>
  
   <appender name="EELFDebug"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${debugLogDirectory}/${debugLogName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- daily rollover --> 
      <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 
 
      <!-- keep 30 days' worth of history capped at 3GB total size --> 
      <maxHistory>30</maxHistory> 
      <totalSizeCap>3GB</totalSizeCap> 
 
    </rollingPolicy>
    <encoder>
      <pattern>${defaultLoggerPattern}</pattern>
    </encoder>
  </appender>
  
  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>256</queueSize>
    <appender-ref ref="EELFDebug" />
  </appender>
 
  
 

  <logger name="org.onap.eelf" level="info" additivity="false">
    <appender-ref ref="asyncEELF" />
  </logger>

  <logger name="org.onap.eelf.audit" level="info" additivity="false">
    <appender-ref ref="asyncEELFAudit" />
  </logger>
  
  <logger name="org.onap.eelf.debug" level="debug" additivity="false">
    <appender-ref ref="asyncEELFDebug" />
  </logger>
	
  <logger name="org.onap.eelf.error" level="info" additivity="false">
    <appender-ref ref="asyncEELFError" />
  </logger>

  <logger name="org.onap.eelf.metrics" level="info" additivity="false">
    <appender-ref ref="asyncEELFMetrics" />
  </logger>      
    
  
  <root level="DEBUG">
    <appender-ref ref="asyncEELF" />
  </root>

</configuration>
