<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Oct 13, 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Apache log4php - 
		Quick start - Apache log4php</title>
		<link rel="stylesheet" href="./css/bootstrap.min.css" type="text/css" />
		<link rel="stylesheet" href="./css/site.css" type="text/css" />
		<script type="text/javascript" src="./js/jquery.min.js"></script>
		<script type="text/javascript" src="./js/bootstrap.min.js"></script>
		<script type="text/javascript" src="./js/prettify.min.js"></script>
		<script type="text/javascript" src="./js/site.js"></script>
		<meta name="Date-Revision-yyyymmdd" content="20121013" />
		<meta http-equiv="Content-Language" content="en" />
		
					<!-- Google Analytics -->
		<script type="text/javascript">
		
			var _gaq = _gaq || [];
			_gaq.push(['_setAccount', 'UA-26177991-1']);
			_gaq.push (['_gat._anonymizeIp']);
			_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 class="composite">
 
		<div class="navbar">
			<div class="navbar-inner">
				<div class="container-fluid">
					<a class="brand" href="http://logging.apache.org/log4php">Apache log4php &trade;</a>
						<ul class="nav">
						<li>
									<a href="index.html" title="About">About</a>
			</li>
					<li>
									<a href="download.html" title="Download">Download</a>
			</li>
					<li>
									<a href="install.html" title="Install">Install</a>
			</li>
							<li class="active">
									<a href="quickstart.html" title="Quick start">Quick start</a>
			</li>
		</ul>

					<!-- Twitter link -->
					<ul class="nav pull-right">
						<li><a href="http://twitter.com/log4php/" class="external">Follow <strong>@log4php</strong></a></li>
					</ul>
					
					<!-- Google CSE Search Box -->
					<form class="navbar-search pull-right" id="cref" action="http://www.google.com/cse">
						<input type="hidden" name="cref" value="http://logging.apache.org/log4php/cse.xml" />
						<input class="search-query pull-left" type="text" name="q" size="40" placeholder="Search" />
					</form>
				</div>
			</div>
		</div>

		<div class="container-fluid">
			<table class="layout-table">
				<tr>
					<td class="sidebar">
						<div class="well sidebar-nav">
										<ul class="nav nav-list">
								 <li class="nav-header"><i class="icon-home"></i>Apache log4php™</li>
																	<li class="none">
								<a href="index.html" title="About">About</a>
			</li>
										<li class="none">
								<a href="download.html" title="Download">Download</a>
			</li>
										<li class="none">
								<a href="install.html" title="Install">Install</a>
			</li>
										<li class="none">
								<a href="changelog.html" title="Changelog">Changelog</a>
			</li>
							</ul>
			<ul class="nav nav-list">
								 <li class="nav-header"><i class="icon-book"></i>Documentation</li>
																		<li class="none active">
								<a href="quickstart.html" title="Quick start">Quick start</a>
			</li>
										<li class="none">
								<a href="docs/introduction.html" title="Introduction">Introduction</a>
			</li>
										<li class="none">
								<a href="docs/configuration.html" title="Configuration">Configuration</a>
			</li>
										<li class="none">
								<a href="docs/loggers.html" title="Loggers">Loggers</a>
			</li>
																																																																																																																																																								<li class="collapsed">
								<a href="docs/appenders.html" title="Appenders">Appenders</a>
						</li>
																																																																																<li class="collapsed">
								<a href="docs/layouts.html" title="Layouts">Layouts</a>
						</li>
										<li class="none">
								<a href="docs/filters.html" title="Filters">Filters</a>
			</li>
										<li class="none">
								<a href="docs/renderers.html" title="Renderers">Renderers</a>
			</li>
										<li class="none">
								<a href="apidocs/index.html" title="API documentation">API documentation</a>
			</li>
							</ul>
			<ul class="nav nav-list">
								 <li class="nav-header"><i class="icon-user"></i>Community</li>
																	<li class="none">
								<a href="volunteering.html" title="Volunteering">Volunteering</a>
			</li>
										<li class="none">
								<a href="contributingpatches.html" title="Contributing Patches">Contributing Patches</a>
			</li>
										<li class="none">
						
						
				<a href="http://wiki.apache.org/logging-log4php" class="external" target="_blank" title="Wiki">Wiki</a>
			</li>
										<li class="none">
						
						
				<a href="http://blogs.apache.org/logging/" class="external" target="_blank" title="Blog">Blog</a>
			</li>
							</ul>
			<ul class="nav nav-list">
								 <li class="nav-header"><i class="icon-info-sign"></i>Project Information</li>
																	<li class="none">
								<a href="integration.html" title="Continuous Integration">Continuous Integration</a>
			</li>
										<li class="none">
								<a href="source-repository.html" title="Source Repository">Source Repository</a>
			</li>
										<li class="none">
								<a href="dependencies.html" title="Dependencies">Dependencies</a>
			</li>
										<li class="none">
								<a href="license.html" title="Project License">Project License</a>
			</li>
										<li class="none">
								<a href="team-list.html" title="Project Team">Project Team</a>
			</li>
										<li class="none">
								<a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
			</li>
										<li class="none">
								<a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
			</li>
							</ul>
			<ul class="nav nav-list">
								 <li class="nav-header"><i class="icon-cog"></i>Project Reports</li>
																	<li class="none">
								<a href="changes-report.html" title="Changes Report">Changes Report</a>
			</li>
										<li class="none">
								<a href="surefire-report.html" title="Surefire Report">Surefire Report</a>
			</li>
										<li class="none">
								<a href="rat-report.html" title="RAT Report">RAT Report</a>
			</li>
										<li class="none">
								<a href="coverage-report/index.html" title="Code Coverage">Code Coverage</a>
			</li>
							</ul>
			<ul class="nav nav-list">
								 <li class="nav-header"><i class="icon-heart"></i>Apache</li>
																	<li class="none">
						
						
				<a href="http://www.apache.org" class="external" target="_blank" title="Home">Home</a>
			</li>
										<li class="none">
						
						
				<a href="http://www.apache.org/foundation/sponsorship.html" class="external" target="_blank" title="Sponsorship">Sponsorship</a>
			</li>
										<li class="none">
						
						
				<a href="http://www.apache.org/licenses/" class="external" target="_blank" title="License">License</a>
			</li>
										<li class="none">
						
						
				<a href="http://www.apache.org/foundation/thanks.html" class="external" target="_blank" title="Thanks">Thanks</a>
			</li>
										<li class="none">
						
						
				<a href="http://www.apachecon.com" class="external" target="_blank" title="Conferences">Conferences</a>
			</li>
										<li class="none">
						
						
				<a href="http://www.apache.org/security/" class="external" target="_blank" title="Security">Security</a>
			</li>
							</ul>
							</div>
						<div id="poweredBy">
															<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
				<img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
			</a>
									</div>
					</td>
					<td class="content">
						<!-- 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. -->

	
		<div class="section"><h2>Quick start<a name="Quick_start"></a></h2>
		
	  		<p>First, <a href="install.html">install Apache log4php</a>.</p>
  
  			<p>You may also like to read the <a href="docs/introduction.html">introduction chapter</a> to familiarise
  			yoursef with the basic concepts used throughout the documentation and examples.</p>
		
			<div class="section"><h3>A trivial example<a name="A_trivial_example"></a></h3>
				<p>Just want logging to stdout?</p>
				
<div><pre class="prettyprint linenums">
include('Logger.php');
$logger = Logger::getLogger(&quot;main&quot;);
$logger-&gt;info(&quot;This is an informational message.&quot;);
$logger-&gt;warn(&quot;I'm not feeling so good...&quot;);
</pre></div>
			
				<p>This produces the following output:</p>
				
<div><pre>
INFO - This is an informational message.
WARN - I'm not feeling so good...
</pre></div>

			</div>
			
			<div class="section"><h3>A simple example<a name="A_simple_example"></a></h3>
				<p>This example shows how to configure log4php using an XML configuration file. The framework will be 
				configured to log messages to a file, but only those with level greater or equal to <tt>WARN</tt>.
				</p>
				
				<p>First, create a configuration file named <tt>config.xml</tt> containing:</p>
				
<div><pre class="prettyprint linenums">
&lt;configuration xmlns=&quot;http://logging.apache.org/log4php/&quot;&gt;
    &lt;appender name=&quot;myAppender&quot; class=&quot;LoggerAppenderFile&quot;&gt;
        &lt;param name=&quot;file&quot; value=&quot;myLog.log&quot; /&gt;
    &lt;/appender&gt;
    &lt;root&gt;
        &lt;level value=&quot;WARN&quot; /&gt;
        &lt;appender_ref ref=&quot;myAppender&quot; /&gt;
    &lt;/root&gt;
&lt;/configuration&gt;
</pre></div>

				<p>This configuration file does the following:</p>
				
				<ul>
				    <li><i>line 2</i>: Creates an appender named <tt>myAppender</tt> using appender class <tt>
					<a href="docs/appenders/file.html">LoggerAppenderFile</a></tt> which is used for 
					logging to a file.</li>
					
					<li><i>line 3</i>: Sets the <tt>file</tt> parameter, which tells the appender to which file to 
					write.</li>
					
					<li><i>line 6</i>: Sets the root logger level to <tt>WARN</tt>. This means that logging requests 
					with the level lower than <tt>WARN</tt> will not be logged by the root logger.</li>
					
					<li><i>line 7</i>: Links <tt>myAppender</tt> to the root logger so that all events recieved by the root 
					logger will be forwarded to <tt>myAppender</tt> and written into the log file.</li>
				</ul>

				<p>To try it out, run the following code:</p>

<div><pre class="prettyprint linenums">
// Insert the path where you unpacked log4php
include('log4php/Logger.php');

// Tell log4php to use our configuration file.
Logger::configure('config.xml');

// Fetch a logger, it will inherit settings from the root logger
$log = Logger::getLogger('myLogger');

// Start logging
$log-&gt;trace(&quot;My first message.&quot;);   // Not logged because TRACE &lt; WARN
$log-&gt;debug(&quot;My second message.&quot;);  // Not logged because DEBUG &lt; WARN
$log-&gt;info(&quot;My third message.&quot;);    // Not logged because INFO &lt; WARN
$log-&gt;warn(&quot;My fourth message.&quot;);   // Logged because WARN &gt;= WARN
$log-&gt;error(&quot;My fifth message.&quot;);   // Logged because ERROR &gt;= WARN
$log-&gt;fatal(&quot;My sixth message.&quot;);   // Logged because FATAL &gt;= WARN
</pre></div>

				<p>This will create a file named <tt>myLog.log</tt> containing the following output:</p>
				
<div><pre>
WARN - My fourth message.
ERROR - My fifth message.
FATAL - My sixth message.
</pre></div>	
			    
			</div>
			
			<div class="section"><h3>An advanced example<a name="An_advanced_example"></a></h3>
			
				<p>This example covers named loggers, layouts and best practices in object-oriented programming.</p>
			
				<p>Create a configuration file named <tt>config.xml</tt> with the following content:</p>
				
<div><pre class="prettyprint linenums">
&lt;configuration xmlns=&quot;http://logging.apache.org/log4php/&quot;&gt;

    &lt;appender name=&quot;myConsoleAppender&quot; class=&quot;LoggerAppenderConsole&quot; /&gt;
    
    &lt;appender name=&quot;myFileAppender&quot; class=&quot;LoggerAppenderFile&quot;&gt;
        &lt;layout class=&quot;LoggerLayoutPattern&quot;&gt;
            &lt;param name=&quot;conversionPattern&quot; value=&quot;%date [%logger] %message%newline&quot; /&gt;
        &lt;/layout&gt;
        &lt;param name=&quot;file&quot; value=&quot;myLog.log&quot; /&gt;
    &lt;/appender&gt;

    &lt;logger name=&quot;Foo&quot;&gt;
        &lt;appender_ref ref=&quot;myFileAppender&quot; /&gt;
    &lt;/logger&gt;
    
    &lt;root&gt;
        &lt;level value=&quot;DEBUG&quot; /&gt;
        &lt;appender_ref ref=&quot;myConsoleAppender&quot; /&gt;
    &lt;/root&gt;
&lt;/configuration&gt;
</pre></div>

				<p>The configuration defines two appenders: one writes to the console, and the other to a file.</p>
				
				<p>The 
				console appender doesn't have a layout defined, so it will revert to default layout
				(<tt><a href="docs/layouts/simple.html">LoggerLayoutSimple</a></tt>). The 
				file appender uses a different layout 
				(<tt><a href="docs/layouts/pattern.html">LoggerLayoutPattern</a></tt>)
				which will result in different formatting of the logging 
				events.</p>
				
				<p>The console appender is linked to the root logger. The file appender is linked to the logger named 
				<tt>Foo</tt>, however <tt>Foo</tt> also inherits appenders from the root logger (in this case
				the console appender). This means that logging events sent to the <tt>Foo</tt> logger will be 
				logged both to the console and the file.</p>
				
				<p>Consider the following code snippet:</p>
				
<div><pre class="prettyprint linenums">
// Include and configure log4php
include('log4php/Logger.php');
Logger::configure('config.xml');

/**
 * This is a classic usage pattern: one logger object per class.
 */
class Foo
{
    /** Holds the Logger. */
    private $log;

    /** Logger is instantiated in the constructor. */
    public function __construct()
    {
        // The __CLASS__ constant holds the class name, in our case &quot;Foo&quot;.
        // Therefore this creates a logger named &quot;Foo&quot; (which we configured in the config file)
        $this-&gt;log = Logger::getLogger(__CLASS__);
    }

    /** Logger can be used from any member method. */
    public function go()
    {
        $this-&gt;log-&gt;info(&quot;We have liftoff.&quot;);
    }
}

$foo = new Foo();
$foo-&gt;go();
</pre></div>

  					<p>This produces the following output in the console:</p>
					<div><pre>INFO - We have liftoff.</pre></div>

					<p>And the following in the log file:</p>
					<div><pre>01/06/11 18:43:39,545 [5428] INFO Foo - We have liftoff.</pre></div>

					<p>Note the different layout, this is because LoggerLayoutTTCC was used as layout for the file appender.</p>
			</div>
			
		</div>
	

					</td>
				</tr>
			</table>
		</div>
			
		<div class="footer">
			<p>Copyright &#169;										2012
												<a href="http://www.apache.org">Apache Software Foundation</a>.
						All Rights Reserved.			
				
				Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>. 
			Please read the <a href="./privacy.html">Privacy policy</a></p>
			<p>Apache log4php, Apache, log4php, the Apache feather logo, the Apache Logging Services project logo and the Built by 
			Maven logo are trademarks of The Apache Software Foundation.</p>
			<p>Site powered by <a class="external" href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a>. Icons from 
			<a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
		</div>
	</body>
</html>
