<?xml version="1.0" encoding="UTF-8"?>
<!--
 *   Licensed to the Apache Software Foundation (ASF) under one
 *   or more contributor license agreements.  See the NOTICE file
 *   distributed with this work for additional information
 *   regarding copyright ownership.  The ASF licenses this file
 *   to you under the Apache License, Version 2.0 (the
 *   "License"); you may not use this file except in compliance
 *   with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing,
 *   software distributed under the License is distributed on an
 *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *   KIND, either express or implied.  See the License for the
 *   specific language governing permissions and limitations
 *   under the License.
 *
 -->
<Configuration>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p - %d{dd MMM yyyy HH:mm:ss,SSS} - %-26.26c{1} - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.apache.directory.fortress.realm" level="info"/>
        <Logger name="org.apache.directory.fortress.core" level="info"/>
        <Logger name="org.apache.directory.fortress.web" level="info"/>
        <Logger name="org.apache.wicket" level="info"/>
        <Logger name="org.springframework.security" level="info"/>
        <Logger name="org.apache.wicket.protocol.http.HttpSessionStore" level="info"/>
        <Logger name="org.apache.wicket.version" level="info"/>
        <Logger name="org.apache.wicket.RequestCycle" level="info"/>
        <Root level="warn">
            <AppenderRef ref="console"/>
        </Root>
    </Loggers>
</Configuration>
