mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-06 13:16:39 +02:00
Output message to the user when chrome logs have been truncated, refs #172
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
namespace Monolog\Handler;
|
||||
|
||||
use Monolog\Formatter\ChromePHPFormatter;
|
||||
use Monolog\Logger;
|
||||
|
||||
/**
|
||||
* Handler sending logs to the ChromePHP extension (http://www.chromephp.com/)
|
||||
@@ -115,8 +116,20 @@ class ChromePHPHandler extends AbstractProcessingHandler
|
||||
if (strlen($data) > 240*1024) {
|
||||
self::$overflowed = true;
|
||||
|
||||
return;
|
||||
$record = array(
|
||||
'message' => 'Incomplete logs, chrome header size limit reached',
|
||||
'context' => array(),
|
||||
'level' => Logger::WARNING,
|
||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||
'channel' => 'monolog',
|
||||
'datetime' => new \DateTime(),
|
||||
'extra' => array(),
|
||||
);
|
||||
self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record);
|
||||
$json = @json_encode(self::$json);
|
||||
$data = base64_encode(utf8_encode($json));
|
||||
}
|
||||
|
||||
$this->sendHeader(self::HEADER_NAME, $data);
|
||||
}
|
||||
|
||||
|
@@ -51,13 +51,39 @@ class ChromePHPHandlerTest extends TestCase
|
||||
$handler = new TestChromePHPHandler();
|
||||
$handler->handle($this->getRecord(Logger::DEBUG));
|
||||
$handler->handle($this->getRecord(Logger::WARNING, str_repeat('a', 150*1024)));
|
||||
$headersBefore = $handler->getHeaders();
|
||||
|
||||
// overflow chrome headers limit
|
||||
$handler->handle($this->getRecord(Logger::WARNING, str_repeat('a', 100*1024)));
|
||||
|
||||
// check the headers did not change
|
||||
$this->assertEquals($headersBefore, $handler->getHeaders());
|
||||
$expected = array(
|
||||
'X-ChromePhp-Data' => base64_encode(utf8_encode(json_encode(array(
|
||||
'version' => ChromePHPHandler::VERSION,
|
||||
'columns' => array('label', 'log', 'backtrace', 'type'),
|
||||
'rows' => array(
|
||||
array(
|
||||
'test',
|
||||
'test',
|
||||
'unknown',
|
||||
'log',
|
||||
),
|
||||
array(
|
||||
'test',
|
||||
str_repeat('a', 150*1024),
|
||||
'unknown',
|
||||
'warn',
|
||||
),
|
||||
array(
|
||||
'monolog',
|
||||
'Incomplete logs, chrome header size limit reached',
|
||||
'unknown',
|
||||
'warn',
|
||||
),
|
||||
),
|
||||
'request_uri' => '',
|
||||
))))
|
||||
);
|
||||
|
||||
$this->assertEquals($expected, $handler->getHeaders());
|
||||
}
|
||||
|
||||
public function testConcurrentHandlers()
|
||||
|
Reference in New Issue
Block a user