<?xml version="1.0" encoding="utf-8"?>
<Configuration status="TRACE" name="cloudhub" packages="com.mulesoft.ch.logging.appender">

    <Appenders>
            <RollingFile name="file" fileName="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}roar.log" 
                 filePattern="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}APP_NAME.log">
            <PatternLayout pattern="{&quot;log_timestamp&quot;:&quot;%d&quot; ,&quot;log_thread&quot;:&quot;[%t]&quot; , &quot;log_level&quot;:&quot;%-5p&quot; , %m}%n" />
            <SizeBasedTriggeringPolicy size="10 MB" />
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
        <Socket name="socket" host="${sys:elk.host}" port="${sys:elk.port}" protocol="TCP">
      		<PatternLayout pattern="{&quot;log_timestamp&quot;:&quot;%d&quot; ,&quot;log_thread&quot;:&quot;[%t]&quot; , &quot;log_level&quot;:&quot;%-5p&quot; , %m}%n" /> 
    	    <SSL>
            <KeyStore location="${sys:path}/elk.jks" password="changeit"/> 
            <TrustStore location="${sys:path}/elk.jks" password="changeit"/>    		
      		</SSL> 
    	  </Socket>
    	
    	  <Log4J2CloudhubLogAppender name="CLOUDHUB"
                                   addressProvider="com.mulesoft.ch.logging.DefaultAggregatorAddressProvider"
                                   applicationContext="com.mulesoft.ch.logging.DefaultApplicationContext"
                                   appendRetryIntervalMs="${sys:logging.appendRetryInterval}"
                                   appendMaxAttempts="${sys:logging.appendMaxAttempts}"
                                   batchSendIntervalMs="${sys:logging.batchSendInterval}"
                                   batchMaxRecords="${sys:logging.batchMaxRecords}"
                                   memBufferMaxSize="${sys:logging.memBufferMaxSize}"
                                   journalMaxWriteBatchSize="${sys:logging.journalMaxBatchSize}"
                                   journalMaxFileSize="${sys:logging.journalMaxFileSize}"
                                   clientMaxPacketSize="${sys:logging.clientMaxPacketSize}"
                                   clientConnectTimeoutMs="${sys:logging.clientConnectTimeout}"
                                   clientSocketTimeoutMs="${sys:logging.clientSocketTimeout}"
                                   serverAddressPollIntervalMs="${sys:logging.serverAddressPollInterval}"
                                   serverHeartbeatSendIntervalMs="${sys:logging.serverHeartbeatSendIntervalMs}"
                                   statisticsPrintIntervalMs="${sys:logging.statisticsPrintIntervalMs}">
            <PatternLayout pattern="[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t] CUSTOM: %m%n"/>
        </Log4J2CloudhubLogAppender>
    	
    </Appenders>
  <Loggers>

    <AsyncRoot level="INFO">
      <AppenderRef ref="FILE" />
      <AppenderRef ref="socket" />
      <AppenderRef ref="CLOUDHUB" />
    </AsyncRoot>

    <!-- Http Logger shows wire traffic on DEBUG -->
    <AsyncLogger name="org.mule.module.http.internal.HttpMessageLogger" level="WARN" />

    <!-- JDBC Logger shows queries and parameters values on DEBUG -->
    <AsyncLogger name="com.mulesoft.mule.transport.jdbc" level="WARN" />

    <!-- CXF is used heavily by Mule for web services -->
    <AsyncLogger name="org.apache.cxf" level="WARN" />

    <!-- Apache Commons tend to make a lot of noise which can clutter the log -->
    <AsyncLogger name="org.apache" level="WARN" />

    <!-- Reduce startup noise -->
    <AsyncLogger name="org.springframework.beans.factory" level="WARN" />

    <!-- Mule classes -->
    <AsyncLogger name="org.mule" level="INFO" />
    <AsyncLogger name="com.mulesoft" level="INFO" />

    <!-- Reduce DM verbosity -->
    <AsyncLogger name="org.jetel" level="WARN" />
    <AsyncLogger name="Tracking" level="WARN" />

  </Loggers>
</Configuration>