#############################################################################
#    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.
#############################################################################
log4j.rootCategory=FATAL, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n

#log4j.logger.org.apache.directory.shared.client.api=DEBUG
log4j.logger.org.apache.directory.server.schema.registries=FATAL
log4j.logger.org.apache.directory.api.ldap=WARN
log4j.logger.org.apache.directory.api.asn1=WARN
log4j.logger.org.apache.directory.ldap.client.api=WARN
log4j.logger.org.apache.directory.api.util.Strings=FATAL
log4j.logger.org.apache.directory.server.core.partition.impl.btree.JdbmTable=WARN
log4j.logger.org.apache.directory.server.core.partition.impl.btree.JdbmIndex=WARN
log4j.logger.org.apache.directory.server.core=WARN
log4j.logger.org.apache.directory.ACI_LOG=WARN
log4j.logger.org.apache.directory.server.xdbm=WARN
log4j.logger.org.apache.directory.kerberos.client=WARN
log4j.logger.org.apache.directory.kerberos.codec=WARN
log4j.logger.org.apache.directory.shared.kerberos.components=WARN


log4j.logger.jdbm.recman.BaseRecordManager=FATAL
log4j.logger.org.apache.directory.LOG_CHANGES=FATAL
log4j.logger.org.apache.directory.server.core.partition.impl.btree.jdbm.DupsCursor=FATAL
log4j.logger.org.apache.directory.PROVIDER_LOG=FATAL
log4j.logger.org.apache.directory.CONSUMER_LOG=FATAL
log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
log4j.logger.org.apache.directory.KERBEROS_LOG=DEBUG
