<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>

  <Appenders>

    <!-- cms.log -->
    <RollingFile name="cms" fileName="${sys:catalina.base}/logs/cms.log"
                 filePattern="${sys:catalina.base}/logs/cms.log.%d{yyyy-MM-dd}">
      <LookupFilter key="jndi:logging/contextName" value="cms" onMatch="ACCEPT"/>
      <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss} [%t] %-5p [%C.%M():%L] %m%n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10MB"/>
      </Policies>
      <DefaultRolloverStrategy max="1" fileIndex="min"/>
    </RollingFile>

    <!-- site.log -->
    <RollingFile name="site" fileName="${sys:catalina.base}/logs/site.log"
                 filePattern="${sys:catalina.base}/logs/site.log.%d{yyyy-MM-dd}">
      <LookupFilter key="jndi:logging/contextName" value="site" onMatch="ACCEPT"/>
      <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss} [%t] %-5p [%C.%M():%L] %m%n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10MB"/>
      </Policies>
      <DefaultRolloverStrategy max="4" fileIndex="min"/>
    </RollingFile>

    <!-- audit.log -->
    <RollingFile name="audit" fileName="${sys:catalina.base}/logs/audit.log"
                 filePattern="${sys:catalina.base}/logs/audit.log.%d{yyyy-MM-dd}">
      <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss} [%t] %-5p [%C.%M():%L] %m%n"/>
      <Policies>
        <TimeBasedTriggeringPolicy/>
      </Policies>
    </RollingFile>

    <!-- crisp-profile.log -->
    <RollingFile name="crisp-profile" fileName="${sys:catalina.base}/logs/crisp-profile.log"
                 filePattern="${sys:catalina.base}/logs/crisp-profile.log.%d{yyyy-MM-dd}">
      <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss} %-5p %t %m%n"/>
      <Policies>
        <TimeBasedTriggeringPolicy/>
      </Policies>
    </RollingFile>

  </Appenders>

  <Loggers>

    <!-- CMS logging -->
    <Logger name="org.apache" level="error"/>
    <Logger name="org.hippoecm" level="error"/>
    <Logger name="com.onehippo" level="error"/>
    <Logger name="org.onehippo" level="error"/>

    <!-- audit logging -->
    <Logger additivity="false" name="org.hippoecm.repository.api.Workflow" level="info">
      <AppenderRef ref="audit"/>
    </Logger>
    <Logger additivity="false" name="org.onehippo.audit" level="info">
      <AppenderRef ref="audit"/>
    </Logger>

    <!-- index repair logging -->
    <Logger name="org.hippoecm.repository.jackrabbit.IndexRepairer" level="info"/>

    <!-- Site logging -->
    <Logger name="org.hippoecm.hst" level="warn"/>

    <!-- DiagnosticReportingValve only logs when diagnostics enabled in hst:hosts config in repo hence
         can be here on level 'info' -->
    <Logger name="org.hippoecm.hst.core.container.DiagnosticReportingValve" level="info"/>

    <!-- crisp-profile logging -->
    <Logger additivity="false" name="org.onehippo.cms7.crisp.core.profile.ResourceResolverProfiler" level="info">
      <AppenderRef ref="crisp-profile"/>
    </Logger>

    <Logger name="freemarker" level="error"/>
    <Logger name="org.apache.cxf" level="error"/>
    <Logger name="javax.ws.rs.core" level="error"/>
    <Logger name="org.apache.commons.pool" level="error"/>
    <Logger name="org.apache.commons.beanutils" level="error"/>

    <!-- too many caching warnings -->
    <Logger name="org.apache.jackrabbit.core.state" level="error"/>
    <Logger name="org.apache.jackrabbit.core.ItemManager" level="error"/>
    <Logger name="org.apache.jackrabbit.core.persistence.bundle.util.LRUNodeIdCache" level="error"/>

    <!-- ignore wicket localizer warnings -->
    <Logger name="org.apache.wicket.Localizer" level="error"/>

    <!-- more info wanted -->
    <Logger name="org.apache.jackrabbit.core.persistence.bundle" level="info"/>
    <Logger name="org.hippoecm.repository.updater" level="info"/>
    <Logger name="org.apache.jackrabbit.core.query.lucene.MultiIndex" level="info"/>
    <Logger name="org.apache.jackrabbit.core.query.lucene.SearchIndex" level="info"/>
    <Logger name="org.apache.jackrabbit.core.query.lucene.ConsistencyCheck" level="info"/>

    <!-- Dynamic beans logging -->
    <Logger name="org.hippoecm.hst.content.beans.dynamic" level="info"/>
    <Logger name="org.hippoecm.hst.content.beans.builder" level="info"/>

    <!-- groovy scripts default log level in production -->
    <Logger name="org.onehippo.repository.update.UpdaterExecutionReport" level="info"/>

    <!-- project logging -->
    <Logger name="org.example" level="info"/>

    <Root level="warn">
      <AppenderRef ref="site"/>
      <AppenderRef ref="cms"/>
    </Root>

  </Loggers>

</Configuration>
