<?xml version="1.0"?>
	<!--
		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.
	-->
<document>
	<properties>
		<title>Cache Event Logging</title>
		<author email="ASmuts@apache.com">Aaron Smuts</author>
	</properties>
	<body>
		<section name="Cache Event Logging">
			<p> JCS allows you to implement custom event loggers. Most of the
				auxiliaries will log ICacheEvents (eg. update, get, getMultiple, remove,
				removeAll, and dispose) to an injected event logger. By default the
				log calls balk. But if you inject a logger, you can add monitoring
				to any auxiliary. Most auxiliaries also log key application events
				and critical errors to the same logger.</p>
			<p>
				To inject a custom event logger, you simply need to implement the
				<code>org.apache.commons.jcs.engine.logging.behavior.ICacheEventLogger
				</code>
				interface and add a couple of lines to the cache.ccf file.
			</p>
			<p> During configuration, JCS will look for event loggers configured
				for each auxiliary. JCS will set any custom properties. For
				instance, to add debug event logging to a remote cache client, you
				could do the following:</p>
			<source><![CDATA[
			. . .
			jcs.auxiliary.RC=org.apache.commons.jcs.auxiliary.remote.RemoteCacheFactory
jcs.auxiliary.RC.attributes=org.apache.commons.jcs.auxiliary.remote.RemoteCacheAttributes
jcs.auxiliary.RC.attributes.FailoverServers=localhost:1101,localhost:1102
jcs.auxiliary.RC.attributes.LocalPort=1201
jcs.auxiliary.RC.attributes.RemoveUponRemotePut=false
# jcs.auxiliary.RC.attributes.RemoteServiceName=RemoteCache
# -1 means no timeout, this is the default
# if the timeout is -1, no threadpool will be used.
jcs.auxiliary.RC.attributes.GetTimeoutMillis=500
jcs.auxiliary.RC.attributes.ThreadPoolName=remote_cache_client
jcs.auxiliary.RC.attributes.GetOnly=false
jcs.auxiliary.RC.cacheeventlogger=org.apache.commons.jcs.engine.logging.CacheEventLoggerDebugLogger
jcs.auxiliary.RC.cacheeventlogger.attributes.logCategoryName=test.RCCEventLogCategory
			. . .
        ]]></source>
			<p> The attribute "logCateoryName" is a property of this
				implementation. You can configure any properties on your
				implementation in the same way.</p>
		</section>
	</body>
</document>