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

	<title>Package log4php\pattern | 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 class="active"><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-LoggerPatternConverterClass.html">LoggerPatternConverterClass</a></li>
				<li><a href="class-LoggerPatternConverterCookie.html">LoggerPatternConverterCookie</a></li>
				<li><a href="class-LoggerPatternConverterDate.html">LoggerPatternConverterDate</a></li>
				<li><a href="class-LoggerPatternConverterEnvironment.html">LoggerPatternConverterEnvironment</a></li>
				<li><a href="class-LoggerPatternConverterFile.html">LoggerPatternConverterFile</a></li>
				<li><a href="class-LoggerPatternConverterLevel.html">LoggerPatternConverterLevel</a></li>
				<li><a href="class-LoggerPatternConverterLine.html">LoggerPatternConverterLine</a></li>
				<li><a href="class-LoggerPatternConverterLiteral.html">LoggerPatternConverterLiteral</a></li>
				<li><a href="class-LoggerPatternConverterLocation.html">LoggerPatternConverterLocation</a></li>
				<li><a href="class-LoggerPatternConverterLogger.html">LoggerPatternConverterLogger</a></li>
				<li><a href="class-LoggerPatternConverterMDC.html">LoggerPatternConverterMDC</a></li>
				<li><a href="class-LoggerPatternConverterMessage.html">LoggerPatternConverterMessage</a></li>
				<li><a href="class-LoggerPatternConverterMethod.html">LoggerPatternConverterMethod</a></li>
				<li><a href="class-LoggerPatternConverterNDC.html">LoggerPatternConverterNDC</a></li>
				<li><a href="class-LoggerPatternConverterNewLine.html">LoggerPatternConverterNewLine</a></li>
				<li><a href="class-LoggerPatternConverterProcess.html">LoggerPatternConverterProcess</a></li>
				<li><a href="class-LoggerPatternConverterRelative.html">LoggerPatternConverterRelative</a></li>
				<li><a href="class-LoggerPatternConverterRequest.html">LoggerPatternConverterRequest</a></li>
				<li><a href="class-LoggerPatternConverterServer.html">LoggerPatternConverterServer</a></li>
				<li><a href="class-LoggerPatternConverterSession.html">LoggerPatternConverterSession</a></li>
				<li><a href="class-LoggerPatternConverterSessionID.html">LoggerPatternConverterSessionID</a></li>
				<li><a href="class-LoggerPatternConverterSuperglobal.html">LoggerPatternConverterSuperglobal</a></li>
				<li><a href="class-LoggerPatternConverterThrowable.html">LoggerPatternConverterThrowable</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 class="active">
<span>Package</span>			</li>
			<li>
<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="package">
	<h1>Package <a href="package-log4php.html">log4php</a>\pattern</h1>



<table class="summary" id="classes">
<caption>Classes summary</caption>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterClass.html">LoggerPatternConverterClass</a></td>
	<td>Returns the fully qualified class name of the class from which the logging
request was issued.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterCookie.html">LoggerPatternConverterCookie</a></td>
	<td>Returns a value from the $_COOKIE superglobal array corresponding to the given
key. If no key is given, return all values.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterDate.html">LoggerPatternConverterDate</a></td>
	<td>Returns the date/time of the logging request.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterEnvironment.html">LoggerPatternConverterEnvironment</a></td>
	<td>Returns a value from the $_ENV superglobal array corresponding to the given key.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterFile.html">LoggerPatternConverterFile</a></td>
	<td>Returns the name of the file from which the logging request was issued.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterLevel.html">LoggerPatternConverterLevel</a></td>
	<td>Returns the event's level.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterLine.html">LoggerPatternConverterLine</a></td>
	<td>Returns the line number within the file from which the logging request was
issued.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterLiteral.html">LoggerPatternConverterLiteral</a></td>
	<td>Returns the literal value passed in the constructor, without modifications.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterLocation.html">LoggerPatternConverterLocation</a></td>
	<td>Returns the line number within the file from which the logging request was
issued.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterLogger.html">LoggerPatternConverterLogger</a></td>
	<td>Returns the name of the logger which created the logging request.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterMDC.html">LoggerPatternConverterMDC</a></td>
	<td>Returns the Mapped Diagnostic Context value corresponding to the given key.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterMessage.html">LoggerPatternConverterMessage</a></td>
	<td>Returns the logged message.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterMethod.html">LoggerPatternConverterMethod</a></td>
	<td>Returns the name of the function or method from which the logging request was
issued.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterNDC.html">LoggerPatternConverterNDC</a></td>
	<td>Returns the full Nested Diagnostic Context.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterNewLine.html">LoggerPatternConverterNewLine</a></td>
	<td>Returns platform-specific newline character(s).</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterProcess.html">LoggerPatternConverterProcess</a></td>
	<td>Returns the PID of the current process.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterRelative.html">LoggerPatternConverterRelative</a></td>
	<td>Returns the number of milliseconds elapsed since the start of the application
until the creation of the logging event.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterRequest.html">LoggerPatternConverterRequest</a></td>
	<td>Returns a value from the $_REQUEST superglobal array corresponding to the given
key.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterServer.html">LoggerPatternConverterServer</a></td>
	<td>Returns a value from the $_SERVER superglobal array corresponding to the given
key.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterSession.html">LoggerPatternConverterSession</a></td>
	<td>Returns a value from the $_SESSION superglobal array corresponding to the given
key.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterSessionID.html">LoggerPatternConverterSessionID</a></td>
	<td>Returns the active session ID, or an empty string if out of session.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterSuperglobal.html">LoggerPatternConverterSuperglobal</a></td>
	<td>Returns a value from a superglobal array corresponding to the given key.</td>
</tr>
<tr>
	<td class="name"><a href="class-LoggerPatternConverterThrowable.html">LoggerPatternConverterThrowable</a></td>
	<td>Returns the throwable information linked to the logging event, if any.</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>
