#############################################################################
#    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=WARN, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${apacheds.log.dir}/apacheds-rolling.log

log4j.appender.R.MaxFileSize=10MB
# Keep some backup files
log4j.appender.R.MaxBackupIndex=5

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy-mm-dd'T'HH:mm:ss.sssZ}] %p [%c] - %m%n

log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-mm-dd'T'HH:mm:ss.sssZ}] %p [%c] - %m%n

# to enabled debugging change the root and the below logger levels to debug and restart the server
log4j.logger.org.apache.directory.server=WARN

# external lib, you may never need to change this logger's level
log4j.logger.org.ehcache=WARN
log4j.logger.org.apache.mina=WARN

# with these we'll not get innundated when switching to DEBUG
log4j.logger.org.apache.directory.api.codec=FATAL
log4j.logger.org.apache.directory.api.asn1=FATAL
log4j.logger.org.apache.directory.server.schema=FATAL
log4j.logger.org.apache.directory.api.ldap.model.schema=FATAL
log4j.logger.org.apache.directory.server.ldap.handlers.extended=debug
log4j.logger.org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmTable=FATAL
log4j.logger.org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex=FATAL
log4j.logger.jdbm.recman.BaseRecordManager=FATAL
log4j.logger.org.apache.directory.LOG_CHANGES=FATAL
log4j.logger.org.apache.directory.ACI_LOG=FATAL
log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
log4j.logger.org.apache.directory.server.core.partition.impl.btree.jdbm.DupsCursor=FATAL
log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
log4j.logger.org.apache.directory.api.asn1.ber=FATAL
log4j.logger.org.apache.directory.server.core.partition.ldif=FATAL
log4j.logger.org.apache.directory.api.ldap=FATAL
log4j.logger.org.apache.directory.api.util.Strings=FATAL
log4j.logger.org.apache.directory.server.core.partition.impl=FATAL
log4j.logger.org.apache.directory.server.core.admin=FATAL
log4j.logger.org.apache.directory.ldap.client.api=FATAL
log4j.logger.org.apache.directory.server.ldap.replication.provider=FATAL
log4j.logger.org.apache.directory.PROVIDER_LOG=FATAL
log4j.logger.org.apache.directory.CONSUMER_LOG=FATAL
log4j.logger.org.apache.directory.server.replication.MockSyncReplConsumer=FATAL
log4j.logger.org.apache.directory.server.KERBEROS_LOG=WARN
#log4j.logger.org.apache.directory.server.ldap.handlers.request.SEARCH_TIME_LOG=debug
log4j.logger.org.apache.directory.mavibot.LOG_PAGES=WARN
log4j.logger.org.apache.directory.mavibot.btree.RecordManager=WARN
