1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-07 21:56:31 +02:00

Use more "unique" markers format for styling

This commit is contained in:
Olivier Poitrey
2014-01-31 00:36:40 -08:00
parent ca88c4d4f3
commit e521588acb
2 changed files with 24 additions and 7 deletions

View File

@@ -31,12 +31,12 @@ class BrowserConsoleHandler extends AbstractProcessingHandler
* *
* Example of formatted string: * Example of formatted string:
* *
* You can do [blue text]{color: blue} or [green background]{background-color: green; color: white} * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white}
* *
*/ */
protected function getDefaultFormatter() protected function getDefaultFormatter()
{ {
return new LineFormatter('[%channel%]{macro: autolabel} [%level_name%]{font-weight: bold} %message%'); return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%');
} }
/** /**
@@ -111,7 +111,7 @@ class BrowserConsoleHandler extends AbstractProcessingHandler
$args = array(self::quote('font-weight: normal')); $args = array(self::quote('font-weight: normal'));
$format = '%c' . $formatted; $format = '%c' . $formatted;
$self = 'Monolog\Handler\BrowserConsoleHandler'; $self = 'Monolog\Handler\BrowserConsoleHandler';
$format = preg_replace_callback('/\[(.*?)\]\{(.*?)\}/', function($m) use(&$args, $self) { $format = preg_replace_callback('/\[\[(.*?)\]\]\{([^}]*)\}/s', function($m) use(&$args, $self) {
$args[] = $self::quote($self::handleCustomStyles($m[2], $m[1])); $args[] = $self::quote($self::handleCustomStyles($m[2], $m[1]));
$args[] = $self::quote('font-weight: normal'); $args[] = $self::quote('font-weight: normal');
return '%c' . $m[1] . '%c'; return '%c' . $m[1] . '%c';

View File

@@ -29,7 +29,7 @@ class BrowserConsoleHandlerTest extends TestCase
$handler = new BrowserConsoleHandler(); $handler = new BrowserConsoleHandler();
$handler->setFormatter($this->getIdentityFormatter()); $handler->setFormatter($this->getIdentityFormatter());
$handler->handle($this->getRecord(Logger::DEBUG, 'foo[bar]{color: red}')); $handler->handle($this->getRecord(Logger::DEBUG, 'foo[[bar]]{color: red}'));
$expected = <<<EOF $expected = <<<EOF
(function(c){if (c && c.groupCollapsed) { (function(c){if (c && c.groupCollapsed) {
@@ -40,14 +40,31 @@ EOF;
$this->assertEquals($expected, BrowserConsoleHandler::generateScript()); $this->assertEquals($expected, BrowserConsoleHandler::generateScript());
} }
public function testEscaping()
{
$handler = new BrowserConsoleHandler();
$handler->setFormatter($this->getIdentityFormatter());
$handler->handle($this->getRecord(Logger::DEBUG, "[foo] [[\"bar\n[baz]\"]]{color: red}"));
$expected = <<<EOF
(function(c){if (c && c.groupCollapsed) {
c.log("%c[foo] %c\"bar\\n[baz]\"%c", "font-weight: normal", "color: red", "font-weight: normal");
}})(console);
EOF;
$this->assertEquals($expected, BrowserConsoleHandler::generateScript());
}
public function testAutolabel() public function testAutolabel()
{ {
$handler = new BrowserConsoleHandler(); $handler = new BrowserConsoleHandler();
$handler->setFormatter($this->getIdentityFormatter()); $handler->setFormatter($this->getIdentityFormatter());
$handler->handle($this->getRecord(Logger::DEBUG, '[foo]{macro: autolabel}')); $handler->handle($this->getRecord(Logger::DEBUG, '[[foo]]{macro: autolabel}'));
$handler->handle($this->getRecord(Logger::DEBUG, '[bar]{macro: autolabel}')); $handler->handle($this->getRecord(Logger::DEBUG, '[[bar]]{macro: autolabel}'));
$handler->handle($this->getRecord(Logger::DEBUG, '[foo]{macro: autolabel}')); $handler->handle($this->getRecord(Logger::DEBUG, '[[foo]]{macro: autolabel}'));
$expected = <<<EOF $expected = <<<EOF
(function(c){if (c && c.groupCollapsed) { (function(c){if (c && c.groupCollapsed) {