###############################################################################
# Copyright (c) 2001, 2007 Oracle Corporation and others.
# 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:
#     Oracle Corporation - initial API and implementation
###############################################################################
# This file contains all the Default Preference Settings

####################################################
# Logging Preference Settings
####################################################

# Enable/Disable console logging.  
# Valid values: TRUE, FALSE
console.logging.on=true

# Maximum log level of console logging.  
# Valid values: DEBUG, INFO, WARN, ERROR, FATAL
console.logging.max.level=INFO

# Enable/Disable eclipse logging.  
# Valid values: TRUE, FALSE
eclipse.logging.on=true

# Maximum log level of eclipse logging.  
# Valid values: DEBUG, INFO, WARN, ERROR, FATAL
eclipse.logging.max.level=INFO

eclipse.pattern=%m

# Enable/Disable file logging.  
# Valid values: TRUE, FALSE
file.logging.on=true

# Maximum log level of file logging.  
# Valid values: DEBUG, INFO, WARN, ERROR, FATAL
file.logging.max.level=DEBUG

# Clear log file when eclipse restarts.  
# Valid values: TRUE, FALSE
file.logging.startup.clear=true

# Location of log file
file.logging.path=facesconfigeditor.log

# Rollover frequency of log file.  
# Valid values: DAILY, WEEKLY, MONTHLY
file.logging.rollover.frequency=DAILY
