<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    
    <!--
        Loggers define indicate which packages/categories are logged, at which level, and to which appender.
        Levels: OFF, ERROR, WARN, INFO, DEBUG, TRACE, ALL
    -->
    <!-- Logs IdP, but not OpenSAML, messages -->
    <logger name="edu.internet2.middleware.shibboleth">
        <level value="INFO" />
    </logger>

    <!-- Logs OpenSAML, but not IdP, messages -->
    <logger name="org.opensaml">
        <level value="WARN" />
    </logger>
    
    <!-- Logs LDAP related messages -->
    <logger name="edu.vt.middleware.ldap">
        <level value="WARN"/>
    </logger>
    
    <!-- Logs JDBC related messages -->
    <logger name="com.mchange">
        <level value="INFO"/>
    </logger>
    
    <!-- Logs MIT custom extension messages -->
    <logger name="edu.mit">
        <level value="INFO" />
    </logger>

    <!-- Logs inbound and outbound protocols messages at DEBUG level -->
    <!--
    <logger name="PROTOCOL_MESSAGE">
        <level value="DEBUG" />
    </logger>
    -->
    
    <!-- 
        Normally you should not edit below this point.  These default configurations are sufficient for 
        almost every system.
    -->

    <!-- 
        Logging appenders define where and how logging messages are logged.
     -->
    <appender name="IDP_ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/usr/local/shibboleth-idp/logs/idp-access.log</File>
        <ImmediateFlush>true</ImmediateFlush>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/usr/local/shibboleth-idp/logs/idp-access-%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%msg%n</Pattern>
        </layout>
    </appender>

    <appender name="IDP_AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/usr/local/shibboleth-idp/logs/idp-audit.log</File>
        <ImmediateFlush>true</ImmediateFlush>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/usr/local/shibboleth-idp/logs/idp-audit-%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%msg%n</Pattern>
        </layout>
    </appender>

    <appender name="IDP_PROCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/usr/local/shibboleth-idp/logs/idp-process.log</File>
        <!-- Uncomment this if application is terminating in such as way that the last few log messages are not written to disk -->
        <!--
        <ImmediateFlush>true</ImmediateFlush>
        -->
        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/usr/local/shibboleth-idp/logs/idp-process-%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <!-- General logging pattern -->
            <Pattern>%date{HH:mm:ss.SSS} - %level [%logger:%line] - %msg%n</Pattern>
            
            <!-- 
                Two MDC variables are available for authenticated users: 'idpSessionID' and 'principalName'. 
                You may include these the data in the logging pattern by means of %mdc{NAME}
                You may include the thread ID by means of %t
            -->
            <!-- Example logging pattern using thread ID and principal name -->
            <!--
            <Pattern>%date{HH:mm:ss.SSS} - %level [%logger:%line] - [%t:%mdc{principalName}] - %msg%n</Pattern>
             -->
            
        </layout>
    </appender>
  
    <logger name="Shibboleth-Access">
        <level value="ALL" />
        <appender-ref ref="IDP_ACCESS" />
    </logger>
    
    <logger name="Shibboleth-Audit">
        <level value="ALL" />
        <appender-ref ref="IDP_AUDIT" />
    </logger>
        
    <logger name="org.springframework">
        <level value="OFF" />
    </logger>
    
    <logger name="org.apache.catalina">
        <level value="ERROR" />
    </logger>    

    <root>
        <level value="ERROR" />
        <appender-ref ref="IDP_PROCESS" />
    </root>

</configuration>
