#/***********************************************************************************************************************
# * Copyright (c) 2008 empolis GmbH and brox IT Solutions GmbH. All rights reserved. This program and the accompanying
# * materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution,
# * and is available at http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors: Ivan Churkin (brox IT Solutions GmbH) - initial creator
# **********************************************************************************************************************/

# This file contains configuration setting for the logging
# for documentation see log4j

#####################################################################
# general

#####################################################################
# Root category set to DEBUG
log4j.rootCategory=INFO, stdout, file
#####################################################################
# Set options for appender named "apMain".
# Appender "apMain" will be a console dump

log4j.appender.stdout   = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout     = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d   %-50.50c{2} %-5p [%-10.10t] - %m%n


#log4j.appender.file    = org.apache.log4j.RollingFileAppender
log4j.appender.file    = org.apache.log4j.FileAppender
log4j.appender.file.File   = SMILA.log
log4j.appender.file.MaxFileSize  = 200KB
log4j.appender.file.MaxBackupIndex = 5
log4j.appender.file.layout              = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d   %-50.50c{2} %-5p [%-10.10t] - %m%n


log4j.logger.org.eclipse.smila=DEBUG
