# Copyright 2001-2009 The Apache Software Foundation.
#
# Licensed 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 Settings - Development Mode 
#
# The log4j configuration used by XLT when running the web tests from inside 
# your IDE during development.
#
#############################################################################

### Logger definitions ###

log4j.rootLogger = debug, console, file

log4j.logger.runtime = debug, console, file
log4j.additivity.runtime = false

log4j.logger.com.xceptance = debug, console, file
log4j.additivity.com.xceptance = false

log4j.logger.com.gargoylesoftware.htmlunit = warn, console, file
log4j.additivity.com.gargoylesoftware.htmlunit = false


### Appender definitions ###

## console
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%d{HH:mm:ss,SSS}] %-5p [%t] - %m%n

## log file
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = ./results/xlt.log
log4j.appender.file.MaxFileSize = 10MB
log4j.appender.file.MaxBackupIndex = 10
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = [%d{yyyy/MM/dd-HH:mm:ss,SSS}] %-5p [%t] %c - %m%n
