<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="Koski" status="INFO" packages="io.prometheus.client.log4j2, fi.oph.koski.log">
  <!--

    Loggers

  -->
  <Loggers>
    <!-- Root logger -->
    <Root level="INFO">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="prometheus" />
    </Root>
    <!-- Access log -->
    <Logger name="org.eclipse.jetty.server.RequestLog" level="INFO" additivity="false">
      <AppenderRef ref="access" />
    </Logger>
    <!-- Audit log -->
    <Logger name="fi.vm.sade.auditlog.Audit" level="INFO" additivity="false">
      <AppenderRef ref="AUDIT" />
    </Logger>
    <!-- Performance log -->
    <Logger name="fi.oph.koski.util.Timer" level="INFO" additivity="false">
      <AppenderRef ref="performance" />
    </Logger>
    <!-- HTTP client log-->
    <Logger name="fi.oph.koski.http.Http" level="DEBUG" additivity="false">
      <AppenderRef ref="httpclient" />
    </Logger>
    <!-- IP tracking log -->
    <Logger name="fi.oph.koski.tiedonsiirto.IPTracking" level="INFO" additivity="false">
      <AppenderRef ref="iptracking" />
    </Logger>
    <!-- Content-Security-Policy reporting logs -->
    <Logger name="fi.oph.koski.frontendvalvonta.ReportUriService" level="INFO" additivity="false">
      <AppenderRef ref="cspreporturi" />
    </Logger>
    <Logger name="fi.oph.koski.frontendvalvonta.ReportToService" level="INFO" additivity="false">
      <AppenderRef ref="frontendreportto" />
    </Logger>
    <!-- Health monitoring -->
    <Logger name="fi.oph.koski.healthcheck.HealthMonitoring" level="INFO" additivity="false">
      <AppenderRef ref="HealthMonitoringLog" />
    </Logger>
    <!-- Suppress unwanted logging -->
    <Logger name="org.reflections" level="WARN" />
    <Logger name="org.eclipse.jetty.webapp" level="WARN" />
    <Logger name="org.eclipse.jetty.server.handler" level="WARN" />
    <Logger name="org.scalatra.servlet" level="WARN" />
    <Logger name="org.eclipse.jetty.server.session" level="WARN" />
    <Logger name="org.eclipse.jetty.server.HttpChannel" level="ERROR" />
  </Loggers>
  <!--

    Appenders

  -->
  <Appenders>
    <!-- Console -->
    <Console name="Console">
      <JsonTemplateLayout eventTemplateUri="classpath:MaskedLogstashJsonEventLayoutV1.json">
        <EventTemplateAdditionalField key="log_type" value="app" />
      </JsonTemplateLayout>
    </Console>
    <!-- Prometheus -->
    <Prometheus name="prometheus" />
    <!-- Access log -->
    <Console name="access">
      <JsonTemplateLayout eventTemplateUri="classpath:MaskedLogstashJsonEventLayoutV1.json">
        <EventTemplateAdditionalField key="log_type" value="access" />
      </JsonTemplateLayout>
    </Console>
    <!-- Audit log -->
    <Console name="AUDIT">
      <PatternLayout pattern="%m%n" />
    </Console>
    <!-- Performance log -->
    <Console name="performance">
      <JsonTemplateLayout eventTemplateUri="classpath:MaskedLogstashJsonEventLayoutV1.json">
        <EventTemplateAdditionalField key="log_type" value="performance" />
      </JsonTemplateLayout>
    </Console>
    <!-- HTTP client log -->
    <Console name="httpclient">
      <JsonTemplateLayout eventTemplateUri="classpath:MaskedLogstashJsonEventLayoutV1.json">
        <EventTemplateAdditionalField key="log_type" value="httpclient" />
      </JsonTemplateLayout>
    </Console>
    <!-- IP tracking log -->
    <Console name="iptracking">
      <JsonTemplateLayout eventTemplateUri="classpath:MaskedLogstashJsonEventLayoutV1.json">
        <EventTemplateAdditionalField key="log_type" value="iptracking" />
      </JsonTemplateLayout>
    </Console>
    <!-- Content-Security-Policy reporting logs -->
    <Console name="cspreporturi">
      <PatternLayout pattern="%m%n" />
    </Console>
    <Console name="frontendreportto">
      <PatternLayout pattern="%m%n" />
    </Console>
    <!-- Health monitoring log -->
    <Console name="HealthMonitoringLog">
      <JsonTemplateLayout eventTemplateUri="classpath:HealthMonitoringJsonEventLayoutV1.json">
        <EventTemplateAdditionalField key="log_type" value="health" />
      </JsonTemplateLayout>
    </Console>
  </Appenders>
</Configuration>
