# 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.
#
# create two appenders
#

log4j.rootLogger=DEBUG, stdout, file

#
# custom logfiles
#

log4j.category.yaafi.tracing = DEBUG, tracing
log4j.additivity.yaafi.tracing = false
log4j.category.yaafi.performance = DEBUG, performance
log4j.additivity.yaafi.performance = false

#
# configure the stdout appender to go to the console
#

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

#
# File Appender
#

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./temp/it20one-signature-service.log
log4j.appender.file.MaxFileSize=1000KB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n

#
# Tracing Appender
#

log4j.appender.tracing = org.apache.log4j.FileAppender
log4j.appender.tracing.file = ./temp/tracing.csv
log4j.appender.tracing.layout = org.apache.log4j.PatternLayout
log4j.appender.tracing.layout.conversionPattern = %d;%m%n
log4j.appender.tracing.append = true

#
# Performance Appender
#

log4j.appender.performance = org.apache.log4j.FileAppender
log4j.appender.performance.file = ./temp/performance.csv
log4j.appender.performance.layout = org.apache.log4j.PatternLayout
log4j.appender.performance.layout.conversionPattern = %d;%m%n
log4j.appender.performance.append = true

#
# Additional settings for supressing unwanted logging
#

log4j.logger.yaafi=DEBUG
