<configuration scan="true" scanPeriod="3 seconds" debug="false">
	<contextName>${module.ajsc.namespace.name}</contextName>
	<jmxConfigurator />
	<property name="logDirectory" value="log" />
	<!-- Example evaluator filter applied against console appender -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<!-- filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter -->
		<!-- 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>
		<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>WARN</level>
		</filter>
    	<file>${logDirectory}/CLAMP/error.log</file>
    <append>true</append>
    <encoder>
      <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}|%X{RequestId}|%.20thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDescription}|%msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <maxIndex>10</maxIndex>
      <FileNamePattern>${logDirectory}/CLAMP/error.%i.log.zip</FileNamePattern>
    </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}/CLAMP/debug.log</file>
    <append>true</append>
    <encoder>
      <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}|%X{RequestId}|%.20thread|%.-5level|%logger{36}|%msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <maxIndex>10</maxIndex>
      <FileNamePattern>${logDirectory}/CLAMP/debug.%i.log.zip</FileNamePattern>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>
  </appender>

  <appender name="AUDIT"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
    	<file>${logDirectory}/CLAMP/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}/CLAMP/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}/CLAMP/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}/CLAMP/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>

	<!-- CLDS related loggers -->
	<logger name="org.onap.clamp.clds" level="INFO" />
	
	<!-- 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>
  	

	<!-- 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" />

	<!-- AJSC Services (bootstrap services) -->
	<logger name="ajsc" level="WARN" />
	<logger name="ajsc.RouteMgmtService" level="INFO" />
	<logger name="ajsc.ComputeService" level="INFO" />
	<logger name="ajsc.VandelayService" level="WARN" />
	<logger name="ajsc.FilePersistenceService" level="WARN" />
	<logger name="ajsc.UserDefinedJarService" level="WARN" />
	<logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
	<logger name="ajsc.LoggingConfigurationService" level="WARN" />

	<!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet 
		logging) -->
	<logger name="ajsc.utils" level="WARN" />
	<logger name="ajsc.utils.DME2Helper" level="INFO" />
	<logger name="ajsc.filters" level="DEBUG" />
	<logger name="ajsc.beans.interceptors" level="DEBUG" />
	<logger name="ajsc.restlet" level="DEBUG" />
	<logger name="ajsc.servlet" level="DEBUG" />
	<logger name="com.att" level="WARN" />
	<logger name="com.att.ajsc.csi.logging" level="DEBUG" />
	<logger name="com.att.ajsc.filemonitor" level="WARN" />
	<logger name="com.att.ajsc.introscope" 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="DEBUG" />
	<logger name="org.apache.camel.component.restlet" 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 -->
	<!-- 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="WARN">
		<appender-ref ref="DEBUG" />
		<appender-ref ref="ERROR" />
		<appender-ref ref="STDOUT" />
	</root>

</configuration>