<?xml version="1.0" encoding="UTF-8"?>
<!--
     ============LICENSE_START=======================================================
     org.onap.dmaap
     ================================================================================
     Copyright © 2017 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=========================================================
   
     ECOMP is a trademark and service mark of AT&T Intellectual Property.
     
 -->

<!DOCTYPE log4j:configuration PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
		<param name="threshold" value="INFO" />
		<layout class="org.apache.log4j.EnhancedPatternLayout">
			<param name="ConversionPattern" value="[%d{ISO8601}{GMT+0} GMT][%-10t][%-5p][%X{serverIp}]%m%n" />
		</layout>
	</appender>

	<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
		<param name="threshold" value="${CAMBRIA_LOG_THRESHOLD}" />
		<param name="File" value="${CAMBRIA_LOG_DIR}/cambria.log" />
		<param name="MaxFileSize" value="128MB"/>
		<param name="MaxBackupIndex" value="10"/>
		<layout class="org.apache.log4j.EnhancedPatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss}{GMT+0}+00:00|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{server}|%X{ipAddress}|%X{className}|%X{timer}|%m%n" />
		</layout>
	</appender>

	<!-- The ECOMP error.log log -->
	<appender name="ECOMP_ERROR" class="org.apache.log4j.RollingFileAppender">
		<param name="threshold" value="INFO" />
		<param name="File" value="${CAMBRIA_LOG_DIR}/error.log" />
		<param name="MaxFileSize" value="128MB"/>
		<param name="MaxBackupIndex" value="10"/>
		<layout class="org.apache.log4j.EnhancedPatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss}{GMT+0}+00:00|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{server}|%X{ipAddress}|%X{className}|%X{timer}|%m%n" />
		</layout>
	</appender>
	<!-- the other 3 ECOMP logs are omitted for this release -->

	<root>
		<level value="${CAMBRIA_LOG_THRESHOLD}" />
		<appender-ref ref="FILE" />
	</root>

</log4j:configuration>
