<?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.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.jcs.auxiliary.remote.RemoteCacheFactory
jcs.auxiliary.RC.attributes=org.apache.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.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>