1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-02-23 22:42:38 +01:00

Added array output to LineFormatter

This commit is contained in:
Jordi Boggiano 2011-02-23 10:57:27 +01:00
parent 811e6c79d6
commit 0bb419cb95
2 changed files with 26 additions and 12 deletions

View File

@ -22,7 +22,7 @@ use Monolog\Logger;
*/
class LineFormatter implements FormatterInterface
{
const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message%\n";
const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %extra%\n";
const SIMPLE_DATE = "Y-m-d H:i:s";
protected $format;
@ -39,14 +39,16 @@ class LineFormatter implements FormatterInterface
$vars = $message;
$vars['datetime'] = $vars['datetime']->format($this->dateFormat);
if (is_array($message['message'])) {
unset($vars['message']);
$vars = array_merge($vars, $message['message']);
}
$output = $this->format;
foreach ($vars as $var => $val) {
if (!is_array($val)) {
if (is_array($val)) {
$strval = array();
foreach ($val as $subvar => $subval) {
$strval[] = $subvar.': '.$subval;
}
$replacement = $strval ? $var.'('.implode(', ', $strval).')' : '';
$output = str_replace('%'.$var.'%', $replacement, $output);
} else {
$output = str_replace('%'.$var.'%', $val, $output);
}
}

View File

@ -25,7 +25,7 @@ class LineFormatterTest extends \PHPUnit_Framework_TestCase
'datetime' => new \DateTime,
'extra' => array(),
));
$this->assertEquals('['.date('Y-m-d').'] log.WARNING: foo'."\n", $message['message']);
$this->assertEquals('['.date('Y-m-d').'] log.WARNING: foo '."\n", $message['message']);
}
public function testDefFormatWithArray()
@ -37,11 +37,23 @@ class LineFormatterTest extends \PHPUnit_Framework_TestCase
'datetime' => new \DateTime,
'extra' => array(),
'message' => array(
'channel' => 'log',
'level_name' => 'WARNING',
'message' => 'foo',
'foo' => 'bar',
'baz' => 'qux',
)
));
$this->assertEquals('['.date('Y-m-d').'] log.WARNING: foo'."\n", $message['message']);
$this->assertEquals('['.date('Y-m-d').'] meh.ERROR: message(foo: bar, baz: qux) '."\n", $message['message']);
}
public function testDefFormatExtras()
{
$formatter = new LineFormatter(null, 'Y-m-d');
$message = $formatter->format(array(
'level_name' => 'ERROR',
'channel' => 'meh',
'datetime' => new \DateTime,
'extra' => array('ip' => '127.0.0.1'),
'message' => 'log',
));
$this->assertEquals('['.date('Y-m-d').'] meh.ERROR: log extra(ip: 127.0.0.1)'."\n", $message['message']);
}
}