diff --git a/src/Writer/AbstractWriter.php b/src/Writer/AbstractWriter.php index 86313367..9d78be27 100644 --- a/src/Writer/AbstractWriter.php +++ b/src/Writer/AbstractWriter.php @@ -306,6 +306,26 @@ public function setFormatter($formatter, array $options = null) return $this; } + /** + * Get formatter + * + * @return Formatter\FormatterInterface + */ + public function getFormatter() + { + return $this->formatter; + } + + /** + * Check if the writer has a formatter + * + * @return bool + */ + public function hasFormatter() + { + return $this->formatter instanceof Formatter\FormatterInterface; + } + /** * Set convert write errors to exception flag * diff --git a/src/Writer/Db.php b/src/Writer/Db.php index a8d1b156..41b1006c 100644 --- a/src/Writer/Db.php +++ b/src/Writer/Db.php @@ -12,7 +12,6 @@ use Traversable; use Zend\Db\Adapter\Adapter; use Zend\Log\Exception; -use Zend\Log\Formatter; use Zend\Log\Formatter\Db as DbFormatter; class Db extends AbstractWriter @@ -87,7 +86,9 @@ public function __construct($db, $tableName = null, array $columnMap = null, $se $this->separator = $separator; } - $this->setFormatter(new DbFormatter()); + if (!$this->hasFormatter()) { + $this->setFormatter(new DbFormatter()); + } } /** diff --git a/test/Writer/AbstractTest.php b/test/Writer/AbstractTest.php index f1a952e4..2cfdb675 100644 --- a/test/Writer/AbstractTest.php +++ b/test/Writer/AbstractTest.php @@ -102,4 +102,34 @@ public function testConstructorWithOptions() $this->assertInstanceOf('Zend\Log\Filter\Priority', $filters[1]); $this->assertEquals(3, $this->readAttribute($filters[1], 'priority')); } + + /** + * @covers Zend\Log\Writer\AbstractWriter::getFormatter + */ + public function testFormatterDefaultsToNull() + { + $this->assertNull($this->_writer->getFormatter()); + } + + /** + * @covers Zend\Log\Writer\AbstractWriter::getFormatter + * @covers Zend\Log\Writer\AbstractWriter::setFormatter + */ + public function testCanSetFormatter() + { + $formatter = new SimpleFormatter; + $this->_writer->setFormatter($formatter); + $this->assertSame($formatter, $this->_writer->getFormatter()); + } + + /** + * @covers Zend\Log\Writer\AbstractWriter::hasFormatter + */ + public function testHasFormatter() + { + $this->assertFalse($this->_writer->hasFormatter()); + + $this->_writer->setFormatter(new SimpleFormatter); + $this->assertTrue($this->_writer->hasFormatter()); + } } diff --git a/test/Writer/DbTest.php b/test/Writer/DbTest.php index 6f368106..5c9c9da7 100644 --- a/test/Writer/DbTest.php +++ b/test/Writer/DbTest.php @@ -242,5 +242,11 @@ public function testConstructWithOptions() $filters = self::readAttribute($writer, 'filters'); $this->assertCount(1, $filters); $this->assertEquals($filter, $filters[0]); + + $registeredFormatter = self::readAttribute($writer, 'formatter'); + $this->assertSame($formatter, $registeredFormatter); + + $registeredDb = self::readAttribute($writer, 'db'); + $this->assertSame($this->db, $registeredDb); } }