<?xml version = "1.0" encoding = "UTF-8" ?>
<!--
# Copyright © 2018  AT&T, Amdocs, Bell Canada 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.
-->
<included>
	<jmxConfigurator />
	<!-- Example evaluator filter applied against console appender -->
<property name="p_tim" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}"/>
		<property name="p_lvl" value="%level"/>
		<property name="p_log" value="%logger"/>
		<property name="p_mdc" value="%replace(%replace(%mdc){'\t','\\\\t'}){'\n', '\\\\n'}"/>
		<property name="p_msg" value="%replace(%replace(%msg){'\t', '\\\\t'}){'\n','\\\\n'}"/>
		<property name="p_exc" value="%replace(%replace(%rootException){'\t', '\\\\t'}){'\n','\\\\n'}"/>
		<property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
		<property name="p_thr" value="%thread"/>
		<property name="defaultPattern" value="%nopexception${p_tim}\t${p_thr}\t${p_lvl}\t${p_log}\t${p_mdc}\t${p_msg}\t${p_exc}\t${p_mak}\t%n"/>
		<property name="debugPattern" value="%nopexception${p_tim}|${p_lvl}|${p_mdc}|${p_exc}|%msg%n"/>

		<!-- Example evaluator filter applied against console appender -->
		<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
				<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
						<level>INFO</level>
				</filter>
				<encoder>
					<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern>
				</encoder>
		</appender>

		<appender name="ERROR"
				class="ch.qos.logback.core.rolling.RollingFileAppender">
				<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
						<level>INFO</level>
				</filter>
				<file>${logDirectory}/error2.log</file>
				<append>true</append>
				<encoder>
						<pattern>${defaultPattern}</pattern>
				</encoder>
				<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
					<fileNamePattern>${outputDirectory}/clamp/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
					<maxFileSize>50MB</maxFileSize>
					<maxHistory>30</maxHistory>
					<totalSizeCap>10GB</totalSizeCap>
				</rollingPolicy>
				<triggeringPolicy
						class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
						<maxFileSize>10MB</maxFileSize>
				</triggeringPolicy>
		</appender>

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


	<appender name="AUDIT"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logDirectory}/audit.log</file>
		<append>true</append>
		<encoder>
			<pattern>%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%.20thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n
			</pattern>
		</encoder>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<maxIndex>10</maxIndex>
			<FileNamePattern>${logDirectory}/audit.%i.log.zip
			</FileNamePattern>
		</rollingPolicy>
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>10MB</maxFileSize>
		</triggeringPolicy>
	</appender>
	<appender name="asyncEELFAudit"
		class="ch.qos.logback.classic.AsyncAppender">
		<queueSize>256</queueSize>
		<appender-ref ref="AUDIT" />
	</appender>

	<appender name="METRIC"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logDirectory}/metric.log</file>
		<append>true</append>
		<encoder>
			<pattern>%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%.20thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|
				%msg%n</pattern>
		</encoder>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<maxIndex>10</maxIndex>
			<FileNamePattern>${logDirectory}/metric.%i.log.zip
			</FileNamePattern>
		</rollingPolicy>
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>10MB</maxFileSize>
		</triggeringPolicy>
	</appender>
	<appender name="asyncEELFMetrics"
		class="ch.qos.logback.classic.AsyncAppender">
		<queueSize>256</queueSize>
		<appender-ref ref="METRIC" />
	</appender>

	<!-- SECURITY related loggers -->
	<appender name="SECURITY"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${logDirectory}/security.log</file>
		<append>true</append>
		<encoder>
			<pattern>%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%.20thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n
			</pattern>
		</encoder>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<maxIndex>10</maxIndex>
			<FileNamePattern>${logDirectory}/security.%i.log.zip
			</FileNamePattern>
		</rollingPolicy>
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>10MB</maxFileSize>
		</triggeringPolicy>
	</appender>
	<appender name="asyncEELFSecurity"
		class="ch.qos.logback.classic.AsyncAppender">
		<queueSize>256</queueSize>
		<appender-ref ref="SECURITY" />
	</appender>
	<!-- AAF related loggers -->
	<logger name="org.onap.aaf" level="INFO" additivity="true">
		<appender-ref ref="DEBUG" />
	</logger>
	<logger name="org.apache.catalina.core" level="INFO"
		additivity="true">
		<appender-ref ref="DEBUG" />
	</logger>
	<!-- CLDS related loggers -->
	<logger name="org.onap.clamp.clds" level="INFO"
		additivity="true">
		<appender-ref ref="ERROR" />
	</logger>

	<!-- CLDS related loggers -->
	<logger name="com.att.eelf.error" level="OFF" additivity="true">
		<appender-ref ref="ERROR" />
	</logger>
	<!-- EELF related loggers -->
	<logger name="com.att.eelf.audit" level="INFO"
		additivity="false">
		<appender-ref ref="asyncEELFAudit" />
	</logger>
	<logger name="com.att.eelf.metrics" level="DEBUG"
		additivity="false">
		<appender-ref ref="asyncEELFMetrics" />
	</logger>
	<logger name="com.att.eelf.security" level="DEBUG"
		additivity="false">
		<appender-ref ref="asyncEELFSecurity" />
	</logger>

	<!-- Spring related loggers -->
	<logger name="org.springframework" level="DEBUG" />

	<!-- Other Loggers that may help troubleshoot -->
	<logger name="org.apache" level="DEBUG" />

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

	<!-- logback jms appenders & loggers definition starts here -->
	<appender name="auditLogs"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
		</filter>
		<file>${logDirectory}/Audit-${lrmRVer}-${lrmRO}-${Pid}.log</file>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>${logDirectory}/Audit-${lrmRVer}-${lrmRO}-${Pid}.%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>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
		</encoder>
	</appender>
	<appender name="perfLogs"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
		</filter>
		<file>${logDirectory}/Perform-${lrmRVer}-${lrmRO}-${Pid}.log</file>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>${logDirectory}/Perform-${lrmRVer}-${lrmRO}-${Pid}.%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>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
		</encoder>
	</appender>
	<logger name="AuditRecord" level="INFO" additivity="FALSE">
		<appender-ref ref="auditLogs" />
	</logger>
	<logger name="AuditRecord_DirectCall" level="INFO"
		additivity="FALSE">
		<appender-ref ref="auditLogs" />
	</logger>
	<logger name="PerfTrackerRecord" level="INFO" additivity="FALSE">
		<appender-ref ref="perfLogs" />
	</logger>
	<!-- logback jms appenders & loggers definition ends here -->

	<root level="DEBUG">
		<appender-ref ref="DEBUG" />
		<appender-ref ref="STDOUT" />
	</root>
</included>