Index: src/main/php/LoggerAppender.php =================================================================== --- src/main/php/LoggerAppender.php (revision 1207767) +++ src/main/php/LoggerAppender.php (working copy) @@ -79,6 +79,10 @@ // Closes the appender on shutdown. Better than a destructor because // it will be called even if a fatal error occurs (destructor won't). register_shutdown_function(array($this, 'close')); + + if ($this->requiresLayout === true && !$this->layout instanceof LoggerLayout) { + $this->layout = new LoggerLayoutSimple(); + } } /** Index: src/main/php/LoggerConfigurator.php =================================================================== --- src/main/php/LoggerConfigurator.php (revision 1207767) +++ src/main/php/LoggerConfigurator.php (working copy) @@ -330,10 +330,7 @@ private function createAppenderLayout(LoggerAppender $appender, $config) { $name = $appender->getName(); $class = $config['class']; - if (empty($class)) { - $this->warn("Layout class not specified for appender [$name]. Reverting to default layout."); - return; - } + if (!class_exists($class)) { $this->warn("Nonexistant layout class [$class] specified for appender [$name]. Reverting to default layout."); return; Index: src/test/php/LoggerAppenderTest.php =================================================================== --- src/test/php/LoggerAppenderTest.php (revision 1207767) +++ src/test/php/LoggerAppenderTest.php (working copy) @@ -146,4 +146,28 @@ $nullfilter = $appender->getFilter(); self::assertNull($nullfilter); } + + public function testInstanciateWithLayout() { + $appender = new LoggerAppenderEcho("LoggerAppenderTest"); + + $expected = "LoggerLayoutSimple"; + $actual = $appender->getLayout(); + $this->assertInstanceof($expected, $actual); + } + + public function testOverwriteLayout() { + $layout = new LoggerLayoutSimple(); + $appender = new LoggerAppenderEcho("LoggerAppenderTest"); + $appender->setLayout($layout); + + $actual = $appender->getLayout(); + $this->assertEquals($layout, $actual); + } + + public function testRequiresNoLayout() { + $appender = new LoggerAppenderNull("LoggerAppenderTest"); + + $actual = $appender->getLayout(); + $this->assertNull($actual); + } } Index: src/test/php/LoggerConfiguratorTest.php =================================================================== --- src/test/php/LoggerConfiguratorTest.php (revision 1207767) +++ src/test/php/LoggerConfiguratorTest.php (working copy) @@ -141,15 +141,7 @@ */ public function testInvalidAppenderLayoutClassSet() { Logger::configure(PHPUNIT_CONFIG_DIR . '/appenders/config_invalid_layout_class.xml'); - } - - /** - * @expectedException PHPUnit_Framework_Error - * @expectedExceptionMessage Layout class not specified for appender [foo]. Reverting to default layout. - */ - public function testNoAppenderLayoutClassSet() { - Logger::configure(PHPUNIT_CONFIG_DIR . '/appenders/config_no_layout_class.xml'); - } + } /** * @expectedException PHPUnit_Framework_Error