Apache Log4php Layouts

About Layouts

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.

Available Layouts

The canonical list of available layouts can be seen in the phpDoc API documentation.

LoggerLayoutPattern

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)

LoggerLayoutSimple

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!

LoggerLayoutTTCC

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!

LoggerLayoutHTML

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!

LoggerLayoutXML

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>