<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="generator" content="ApiGen 2.8.0" />

	<title>Interface LoggerConfigurator | Apache log4php</title>

	<script type="text/javascript" src="resources/combined.js?238209907"></script>
	<script type="text/javascript" src="elementlist.js?4055067042"></script>
	<link rel="stylesheet" type="text/css" media="all" href="resources/style.css?3505392360" />

	<script type="text/javascript">
		var _gaq = _gaq || [];
		_gaq.push(['_setAccount', "UA-26177991-1"]);
		_gaq.push(['_trackPageview']);

		(function() {
			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
			var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
		})();
	</script>
</head>

<body>
<div id="left">
	<div id="menu">
		<a href="index.html" title="Overview"><span>Overview</span></a>


		<div id="groups">
			<h3>Packages</h3>
			<ul>
				<li class="active"><a href="package-log4php.html">log4php<span></span></a>
						<ul>
				<li><a href="package-log4php.appenders.html">appenders</a>
						</li>
				<li><a href="package-log4php.configurators.html">configurators</a>
						</li>
				<li><a href="package-log4php.filters.html">filters</a>
						</li>
				<li><a href="package-log4php.helpers.html">helpers</a>
						</li>
				<li><a href="package-log4php.layouts.html">layouts</a>
						</li>
				<li><a href="package-log4php.pattern.html">pattern</a>
						</li>
				<li><a href="package-log4php.renderers.html">renderers</a>
						</li>
							</ul></li>
			</ul>
		</div>

		<hr />


		<div id="elements">
			<h3>Classes</h3>
			<ul>
				<li><a href="class-Logger.html">Logger</a></li>
				<li><a href="class-LoggerAppender.html">LoggerAppender</a></li>
				<li><a href="class-LoggerAppenderPool.html">LoggerAppenderPool</a></li>
				<li><a href="class-LoggerAutoloader.html">LoggerAutoloader</a></li>
				<li><a href="class-LoggerConfigurable.html">LoggerConfigurable</a></li>
				<li><a href="class-LoggerConfiguratorDefault.html">LoggerConfiguratorDefault</a></li>
				<li><a href="class-LoggerFilter.html">LoggerFilter</a></li>
				<li><a href="class-LoggerHierarchy.html">LoggerHierarchy</a></li>
				<li><a href="class-LoggerLayout.html">LoggerLayout</a></li>
				<li><a href="class-LoggerLevel.html">LoggerLevel</a></li>
				<li><a href="class-LoggerLocationInfo.html">LoggerLocationInfo</a></li>
				<li><a href="class-LoggerLoggingEvent.html">LoggerLoggingEvent</a></li>
				<li><a href="class-LoggerMDC.html">LoggerMDC</a></li>
				<li><a href="class-LoggerNDC.html">LoggerNDC</a></li>
				<li><a href="class-LoggerReflectionUtils.html">LoggerReflectionUtils</a></li>
				<li><a href="class-LoggerRoot.html">LoggerRoot</a></li>
				<li><a href="class-LoggerThrowableInformation.html">LoggerThrowableInformation</a></li>
			</ul>

			<h3>Interfaces</h3>
			<ul>
				<li class="active"><a href="class-LoggerConfigurator.html">LoggerConfigurator</a></li>
			</ul>


			<h3>Exceptions</h3>
			<ul>
				<li><a href="class-LoggerException.html">LoggerException</a></li>
			</ul>


		</div>
	</div>
</div>

<div id="splitter"></div>

<div id="right">
<div id="rightInner">
	<form id="search">
		<input type="hidden" name="cx" value="" />
		<input type="hidden" name="ie" value="UTF-8" />
		<input type="text" name="q" class="text" />
		<input type="submit" value="Search" />
	</form>

	<div id="navigation">
		<ul>
			<li>
				<a href="index.html" title="Overview"><span>Overview</span></a>
			</li>
			<li>
				<a href="package-log4php.html" title="Summary of log4php"><span>Package</span></a>
			</li>
			<li class="active">
<span>Class</span>			</li>
		</ul>
		<ul>
			<li>
				<a href="tree.html" title="Tree view of classes, interfaces, traits and exceptions"><span>Tree</span></a>
			</li>
		</ul>
		<ul>
		</ul>
	</div>

<div id="content" class="class">
	<h1>Interface LoggerConfigurator</h1>


	<div class="description">
	
<p>Interface for logger configurators.</p>

	</div>





	<div>
		<h4>Direct known implementers</h4>
			<a href="class-LoggerConfiguratorDefault.html">LoggerConfiguratorDefault</a>
	</div>




	<div class="info">
		
		
		
		<b>Package:</b> <a href="package-log4php.html">log4php</a><br />

				<b>License:</b>
				<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a><br />
				<b>Version:</b>
				$Revision: 1213710 $<br />
				<b>Since:</b>
				2.2<br />
		<b>Located at</b> <a href="source-class-LoggerConfigurator.html#21-42" title="Go to source code">LoggerConfigurator.php</a><br />
	</div>



	<table class="summary" id="methods">
	<caption>Methods summary</caption>
	<tr data-order="configure" id="_configure">

		<td class="attributes"><code>
			 public 
			
			
			</code>
		</td>

		<td class="name"><div>
		<a class="anchor" href="#_configure">#</a>
		<code><a href="source-class-LoggerConfigurator.html#31-41" title="Go to source code">configure</a>( <span><code><a href="class-LoggerHierarchy.html">LoggerHierarchy</a></code> <var>$hierarchy</var></span>, <span>mixed <var>$input</var> = <span class="php-keyword1">null</span></span> )</code>

		<div class="description short">
			
<p>Configures log4php based on the given configuration.</p>

		</div>

		<div class="description detailed hidden">
			
<p>Configures log4php based on the given configuration.</p>

<p>All configurators implementations must implement this interface.</p>



				<h4>Parameters</h4>
				<div class="list"><dl>
					<dt><var>$hierarchy</var></dt>
					<dd><code><code><a href="class-LoggerHierarchy.html">LoggerHierarchy</a></code></code><br>$hierarchy The hierarchy on which to perform the configuration.</dd>
					<dt><var>$input</var></dt>
					<dd><code>mixed</code><br>$input Either path to the config file or the configuration as an array.</dd>
				</dl></div>





		</div>
		</div></td>
	</tr>
	</table>


















</div>

	<div id="footer">
		Apache log4php API documentation generated by <a href="http://apigen.org">ApiGen 2.8.0</a>
	</div>
</div>
</div>
</body>
</html>
