<?xml version="1.0" encoding="UTF-8" ?>
<Configuration monitorInterval="5" packages="org.apereo.cas.logging">
    <Properties>
        <Property name="baseDir">/var/log</Property>

        <Property name="cas.log.level">info</Property>
        <Property name="spring.webflow.log.level">warn</Property>
        <Property name="spring.security.log.level">info</Property>
        <Property name="spring.cloud.log.level">warn</Property>
        <Property name="spring.boot.admin.log.level">debug</Property>
        <Property name="spring.web.log.level">warn</Property>
        <Property name="spring.boot.log.level">warn</Property>
        <Property name="ldap.log.level">warn</Property>
        <Property name="pac4j.log.level">warn</Property>
        <Property name="opensaml.log.level">warn</Property>
        <Property name="hazelcast.log.level">warn</Property>
    </Properties>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%highlight{%d %p [%c] - &lt;%m&gt;}%n"/>
        </Console>

        <CasAppender name="casConsole">
            <AppenderRef ref="console" />
        </CasAppender>
    </Appenders>
    <Loggers>
        <!-- If adding a Logger with level set higher than warn, make category as selective as possible -->
        <!-- Loggers inherit appenders from Root Logger unless additivity is false -->
        <AsyncLogger name="org.apereo" level="${sys:cas.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.apereo.services.persondir" level="${sys:cas.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.apereo.cas.web.flow" level="${sys:cas.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.apereo.spring" level="${sys:cas.log.level}" includeLocation="true"/>

        <AsyncLogger name="org.apache" level="warn" />
        <AsyncLogger name="org.apache.http" level="error" />

        <AsyncLogger name="org.springframework.boot" level="${sys:spring.boot.log.level" includeLocation="true"/>
        <AsyncLogger name="org.springframework.boot.context.embedded" level="info" includeLocation="true" />
        <AsyncLogger name="org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration"
        level="${sys:spring.security.log.level}" includeLocation="true" />
        <AsyncLogger name="org.springframework.boot.autoconfigure.security" level="${sys:spring.security.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.springframework.boot.devtools" level="off" includeLocation="true"/>

        <AsyncLogger name="org.springframework" level="warn" includeLocation="true" />
        <AsyncLogger name="org.springframework.webflow" level="${sys:spring.webflow.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.springframework.aop" level="warn" includeLocation="true" />
        <AsyncLogger name="org.springframework.web" level="warn" includeLocation="true"/>
        <AsyncLogger name="org.springframework.session" level="warn" includeLocation="true"/>
        <AsyncLogger name="org.springframework.scheduling" level="info" includeLocation="true"/>
        <AsyncLogger name="org.springframework.cloud.vault" level="warn" includeLocation="true" />
        <AsyncLogger name="org.springframework.web.client" level="warn" includeLocation="true" />
        <AsyncLogger name="org.springframework.security" level="${sys:spring.security.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.springframework.cloud" level="${sys:spring.cloud.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.springframework.amqp" level="error" />
        <AsyncLogger name="org.springframework.integration" level="warn" includeLocation="true"/>
        <AsyncLogger name="org.springframework.messaging" level="warn" includeLocation="true"/>
        <AsyncLogger name="org.springframework.web" level="${sys:spring.web.log.level}" includeLocation="true"/>
        <AsyncLogger name="org.springframework.orm.jpa" level="warn" includeLocation="true"/>
        <AsyncLogger name="org.springframework.scheduling" level="warn" includeLocation="true"/>
        <AsyncLogger name="org.springframework.context.annotation" level="off" includeLocation="true"/>
        <AsyncLogger name="org.springframework.web.socket" level="warn" includeLocation="true"/>

        <AsyncLogger name="org.thymeleaf" level="warn" includeLocation="true"/>

        <AsyncLogger name="org.pac4j" level="${sys:pac4j.log.level}" includeLocation="true"/>

        <AsyncLogger name="org.opensaml" level="${sys:opensaml.log.level}" includeLocation="true"/>
        <AsyncLogger name="PROTOCOL_MESSAGE" level="${sys:opensaml.log.level}" includeLocation="true" />

        <AsyncLogger name="net.sf.ehcache" level="warn" includeLocation="true"/>
        <AsyncLogger name="com.couchbase" level="warn" includeLocation="true"/>
        <AsyncLogger name="de.codecentric" level="${sys:spring.boot.admin.log.level}" includeLocation="true"/>
        <AsyncLogger name="net.jradius" level="warn" includeLocation="true" />
        <AsyncLogger name="org.openid4java" level="warn" includeLocation="true" />
        <AsyncLogger name="org.ldaptive" level="${sys:ldap.log.level}" includeLocation="true"/>
        <AsyncLogger name="com.hazelcast" level="${sys:hazelcast.log.level}" includeLocation="true"/>

        <!-- All Loggers inherit appenders specified here, unless additivity="false" on the Logger -->
        <AsyncRoot level="warn">
            <AppenderRef ref="casConsole"/>
        </AsyncRoot>
    </Loggers>
</Configuration>
