<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="CONSOLE-WARN" target="SYSTEM_ERR">
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
    </Console>

    <Console name="CONSOLE" target="SYSTEM_OUT">
      <PatternLayout pattern="* %m %n"/>
    </Console>

    <RollingFile name="ROLL-DEBUG" fileName="${sys:bundleProcess.logs.dir}/debug.log" filePattern="${sys:bundleProcess.logs.dir}/debug-%i.log.gz">
      <DefaultRolloverStrategy max="3" fileIndex="min"/>
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile>

    <RollingFile name="ROLL-INFO" fileName="${sys:bundleProcess.logs.dir}/info.log" filePattern="${sys:bundleProcess.logs.dir}/info-%i.log.gz">
      <DefaultRolloverStrategy max="3" fileIndex="min"/>
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile>

    <RollingFile name="ROLL-WARN" fileName="${sys:bundleProcess.logs.dir}/warn.log" filePattern="${sys:bundleProcess.logs.dir}/warn-%i.log.gz">
      <DefaultRolloverStrategy max="3" fileIndex="min"/>
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile>

    <RollingFile name="ROLL-ERROR" fileName="${sys:bundleProcess.logs.dir}/error.log" filePattern="${sys:bundleProcess.logs.dir}/error-%i.log.gz">
      <DefaultRolloverStrategy max="3" fileIndex="min"/>
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile>

    <RollingFile name="ROLL-ACCESS-DEFAULT" fileName="${sys:bundleProcess.logs.dir}/access.log" immediateFlush="false" bufferedIO="true" bufferSize="16384" filePattern="${sys:bundleProcess.logs.dir}/access-%i.log.gz">
      <DefaultRolloverStrategy max="3" fileIndex="min">
        <Delete basePath="${sys:bundleProcess.logs.dir}">
          <IfAll>
            <IfLastModified age="30d" />
            <IfFileName glob="access*.log*"/>
          </IfAll>
        </Delete>
      </DefaultRolloverStrategy>
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile>

    <!--RollingFile name="ROLL-ACCESS-EXAMPLE-SERVLET-CONTAINER" fileName="${sys:bundleProcess.logs.dir}/access_exampleServletContainer.log" immediateFlush="false" bufferedIO="true" bufferSize="16384" filePattern="${sys:bundleProcess.logs.dir}/access_exampleServletContainer-%i.log.gz">
      <DefaultRolloverStrategy max="3" fileIndex="min">
        <Delete basePath="${sys:bundleProcess.logs.dir}">
          <IfAll>
            <IfLastModified age="30d" />
            <IfFileName glob="access*.log*"/>
          </IfAll>
        </Delete>
      </DefaultRolloverStrategy>
      <PatternLayout pattern="[%d] %6p - %30.30c - %m %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile-->
  </Appenders>

  <Loggers>
    <Logger name="org.eclipse.jetty" level="info"/>
    <Logger name="org.eclipse.jetty.webapp.StandardDescriptorProcessor" level="warn"/>

    <!-- This is a base category for all access logs. Each access log record has INFO priority.
         Each servlet container started inside Bundle process stores its access log in some nested category.
         The exact name of the category is 'org.eclipse.jetty.server.RequestLog.<servletContainerServiceId>',
          where <servletContainerServiceId> is an identifier registered in bundle_build.proeprties as a value of property
          service.<id>.bundledin=<servletContainerServiceId>.
         So one may define nested category in order to redirect log records of particular servlet container instance to some separate file.
         (For instance, see commented appender for servlet container with name 'ROLL-ACCESS-EXAMPLE-SERVLET-CONTAINER'
          and its category 'org.eclipse.jetty.server.RequestLog.exampleServletContainer')
         -->
    <Logger name="org.eclipse.jetty.server.RequestLog" level="info" additivity="false">
      <AppenderRef ref="ROLL-ACCESS-DEFAULT"/>
    </Logger>

    <!--Logger name="org.eclipse.jetty.server.RequestLog.exampleServletContainer" level="info" additivity="false">
      <AppenderRef ref="ROLL-ACCESS-EXAMPLE-SERVLET-CONTAINER"/>
    </Logger-->

    <Logger name="bundle.startup" level="info">
      <AppenderRef ref="CONSOLE"/>
    </Logger>

    <Root level="debug">
      <AppenderRef ref="CONSOLE-WARN" level="warn" />
      <AppenderRef ref="ROLL-DEBUG" level="debug"/>
      <AppenderRef ref="ROLL-INFO" level="info" />
      <AppenderRef ref="ROLL-WARN" level="warn"/>
      <AppenderRef ref="ROLL-ERROR" level="error"/>
    </Root>
  </Loggers>
</Configuration>