The exact format of log messages can be configured using layouts. These layouts are totally independend of the used appender i.e. the same log message can be written to a log file with PID, file name and line number but at the same time displayed on the console with just a timestamp and the priority.
Layouts are a property of appenders just like filters and threshholds are. In the following example a Pattern Layout is used.
log4php.appender.default = LoggerAppenderEcho
log4php.appender.default.layout = LoggerLayoutPattern
log4php.appender.default.layout.ConversionPattern = "%d{ISO8601} [%p] %c: %m (at %F line %L)%n"
A simple $log->info("Hello world!"); would be printed on the console as:
2009-09-14 01:01:53,353 [INFO] root: Hello World! (at /srv/home/james/workspace/log4php/src/examples/php/layout_pattern.php line 6)
Other layouts could format the log messages as HTML, XML or predefined formats.
The canonical list of available layouts can be seen in the phpDoc API documentation.
A flexible layout configurable with pattern string.
require_once dirname(__FILE__).'/../../main/php/Logger.php';
Logger::configure(dirname(__FILE__).'/../resources/layout_pattern.properties');
$logger = Logger::getRootLogger();
$logger->info("Hello World!");
$logger->debug("Second line");
log4php.appender.default = LoggerAppenderEcho
log4php.appender.default.layout = LoggerLayoutPattern
log4php.appender.default.layout.ConversionPattern = "%d{ISO8601} [%p] %c: %m (at %F line %L)%n"
log4php.rootLogger = DEBUG, default
2009-09-09 00:27:35,787 [INFO] root: Hello World! (at src/examples/php/layout_pattern.php line 6) 2009-09-09 00:27:35,787 [DEBUG] root: Second line (at src/examples/php/layout_pattern.php line 7)
Returns the log statement in a format consisting of the level, followed by " - " and then the message.
Example:
require_once dirname(__FILE__).'/../../main/php/Logger.php';
Logger::configure(dirname(__FILE__).'/../resources/layout_simple.properties');
$logger = Logger::getRootLogger();
$logger->info("Hello World!");
log4php.appender.default = LoggerAppenderEcho log4php.appender.default.layout = LoggerLayoutSimple log4php.rootLogger = DEBUG, default
INFO - Hello World!
TTCC layout format consists of time, thread, category and nested diagnostic context information, hence the name.
require_once dirname(__FILE__).'/../../main/php/Logger.php';
Logger::configure(dirname(__FILE__).'/../resources/layout_ttcc.properties');
$logger = Logger::getRootLogger();
$logger->info("Hello World!");
log4php.appender.default = LoggerAppenderEcho log4php.appender.default.layout = LoggerLayoutTTCC log4php.appender.default.layout.MicroSecondsPrinting = false log4php.appender.default.layout.categoryPrefixing = true log4php.appender.default.layout.dateFormat = "%H:%M" log4php.rootLogger = DEBUG, default
02:28 [13714] INFO root - Hello World!
The LoggerLayoutHTML formats the message as HTML table which looks similar to the following:
require_once dirname(__FILE__).'/../../main/php/Logger.php';
Logger::configure(dirname(__FILE__).'/../resources/layout_html.properties');
$logger = Logger::getRootLogger();
$logger->info("Hello World!");
log4php.appender.default = LoggerAppenderEcho log4php.appender.default.layout = LoggerLayoutHtml log4php.rootLogger = DEBUG, default
Log session start time Wed Sep 9 00:11:30 2009
Time Thread Level Category Message
0 8318 INFO root Hello World!
The LoggerLayoutXML formats the message as XML fragment:
require_once dirname(__FILE__).'/../../main/php/Logger.php';
Logger::configure(dirname(__FILE__).'/../resources/layout_xml.properties');
$logger = Logger::getRootLogger();
$logger->info("Hello World!");
log4php.appender.default = LoggerAppenderEcho log4php.appender.default.layout = LoggerLayoutXml log4php.rootLogger = DEBUG, default
<log4php:eventSet xmlns:log4php="http://logging.apache.org/log4php/" version="0.3" includesLocationInfo="true">
<log4php:event logger="root" level="INFO" thread="18539" timestamp="1252883382822">
<log4php:message><![CDATA[Hello World!]]></log4php:message>
<log4php:locationInfo class="main" file="/srv/home/james/workspace/log4php/src/examples/php/layout_xml.php" line="6" method="main" />
</log4php:event>
</log4php:eventSet>