# 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.
# The LoggerManager creates loggers for entries in this file.
# This initializes certain logs at the set debugging levels( 0 - 4 )
# A management tool will force reinitialization and a reread of this file at
# runtime.  However the primary way to alter runtime loggin levels will be to
# modify the level of the logger object through the tool.
# An entry must have a .level entry to be initialized
# .systemout is N by default, Y will turn it on
# .maxfilesize -- number of bytes before archiving log
# .numtocheck -- number of entries before checking to see if it is too big
# The logroot value is used by default.  This can be overridden with
# a specific entry

logroot=@project_home@/logs

# the sleepinterval value is how often the writing thread wakes up in ms.
# Recommend set to 1000 for development servers (so it would write with 1 sec. delay
# and 10000 for production servers (so it would write every 10 seconds.)

# Min is 5 secs ie 5000
sleepInterval=1000

# The string buffer size before messages are flushed to disk.
# Minimum is zero, which flushes every log message to disk asap.
buffer_capacity=0

access_cacheaccess.level=2
access_cacheaccess.systemout=y
access_cacheaccess.maxfilesize=100000
access_cacheaccess.numtocheck=300

control_cache.level=2
control_cache.systemout=y
control_cache.maxfilesize=100000
control_cache.numtocheck=300

engine_groupcache.level=2
engine_groupcache.systemout=y
engine_groupcache.maxfilesize=100000
engine_groupcache.numtocheck=300

control_cachemanager.level=2
control_cachemanager.systemout=y
control_cachemanager.maxfilesize=100000
control_cachemanager.numtocheck=300

memory_lateralcacheunicaster.level=0
memory_lateralcacheunicaster.systemout=n
memory_lateralcacheunicaster.maxfilesize=100000
memory_lateralcacheunicaster.numtocheck=300

remote_remotecachemanager.level=2
remote_remotecachemanager.systemout=y
remote_remotecachemanager.maxfilesize=100000
remote_remotecachemanager.numtocheck=300

group_remotegroupcacheserver.level=2
group_remotegroupcacheserver.systemout=y
group_remotegroupcacheserver.maxfilesize=100000
group_remotegroupcacheserver.numtocheck=300
