#
# Copyright 2005 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.

#
# This is a sample properties file to configure standard JDK 1.4 logging for 
# the JDO TCK test cases. Below you find an entry for each of the JDO TCK
# logger instances. Please uncomment the line and adapt the log level to your
# needs, in case to want to enable a particular logger.
#
# The following describes the mapping between the log level of JDK 1.4 logging
# and apache commns logging:
#   JDK 1.4        Apache 
#   FINEST         trace 
#   FINE, FINER    debug 
#   INFO, CONFIG   info
#   WARNING        warn
#   SEVERE         error, fatal
#

######################
# JDO TCK test cases
######################

#org.apache.jdo.tck.level = FINE

######################
# JDK 1.4 logging properties
######################

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = FINEST
