#############################################################################
#    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=OFF, 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.rootCategory=DEBUG, rollingFile

log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=/tmp/cursor-server-integ.log
log4j.appender.rollingFile.MaxFileSize=1MB
log4j.appender.rollingFile.MaxBackupIndex=5
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%m%n

log4j.logger.org=FATAL
log4j.logger.JdbmTable=FATAL
log4j.logger.JdbmIndex=FATAL
log4j.logger.BaseRecordManager=FATAL
log4j.logger.LOG_CHANGES=FATAL
log4j.logger.net=FATAL
log4j.logger.aci-logger=FATAL
log4j.logger.DupsCursor=FATAL
log4j.logger.PROVIDER_LOG=FATAL
log4j.logger.CONSUMER_LOG=FATAL
log4j.logger.CURSOR=DEBUG
