# 
# Copyright 2004-2006 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.

handlers = org.apache.juli.FileHandler

############################################################
#
# JDK 1.4+ logging handler specific properties for Pluto portal
# using Tomcat's custom implementation of LogManager.
# Logging level can be set to any one of:
# SEVERE, WARN, INFO, CONFIG, FINE, FINEST or ALL. 
# See the Tomcat documentation for more details.
# 
############################################################

org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
#Log file will be named pluto.<yyyy-mm-dd>.log
org.apache.juli.FileHandler.prefix = pluto.

org.apache.pluto.level=FINE