mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-07 05:36:45 +02:00
Added array output to LineFormatter
This commit is contained in:
@@ -22,7 +22,7 @@ use Monolog\Logger;
|
|||||||
*/
|
*/
|
||||||
class LineFormatter implements FormatterInterface
|
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";
|
const SIMPLE_DATE = "Y-m-d H:i:s";
|
||||||
|
|
||||||
protected $format;
|
protected $format;
|
||||||
@@ -39,14 +39,16 @@ class LineFormatter implements FormatterInterface
|
|||||||
$vars = $message;
|
$vars = $message;
|
||||||
$vars['datetime'] = $vars['datetime']->format($this->dateFormat);
|
$vars['datetime'] = $vars['datetime']->format($this->dateFormat);
|
||||||
|
|
||||||
if (is_array($message['message'])) {
|
|
||||||
unset($vars['message']);
|
|
||||||
$vars = array_merge($vars, $message['message']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$output = $this->format;
|
$output = $this->format;
|
||||||
foreach ($vars as $var => $val) {
|
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);
|
$output = str_replace('%'.$var.'%', $val, $output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,7 @@ class LineFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'datetime' => new \DateTime,
|
'datetime' => new \DateTime,
|
||||||
'extra' => array(),
|
'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()
|
public function testDefFormatWithArray()
|
||||||
@@ -37,11 +37,23 @@ class LineFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'datetime' => new \DateTime,
|
'datetime' => new \DateTime,
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
'message' => array(
|
'message' => array(
|
||||||
'channel' => 'log',
|
'foo' => 'bar',
|
||||||
'level_name' => 'WARNING',
|
'baz' => 'qux',
|
||||||
'message' => 'foo',
|
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
$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']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user