# 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.
#
# This file sets up console and file logging for the wiab server

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler

# Available log levels are:
# ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE, OFF

# Default global logging level.
# Loggers and Handlers may override this level
.level=INFO

java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.pattern = wiab-server.log
java.util.logging.FileHandler.count=5
java.util.logging.FileHandler.append=false
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.limit=5242880

# Per-package logging levels.
# Add extra packages here to increase or decrease the log level
# per-package levels affect both console and file output

org.eclipse.jetty.level = SEVERE
org.eclipse.jetty.websocket.level = SEVERE

#org.waveprotocol.level=ALL

