diff --git a/code/Bridge/MonologCollector.php b/code/Bridge/MonologCollector.php new file mode 100644 index 0000000..3254b18 --- /dev/null +++ b/code/Bridge/MonologCollector.php @@ -0,0 +1,107 @@ + + * $debugbar->addCollector(new MonologCollector($logger)); + * + */ +class MonologCollector extends AbstractProcessingHandler implements DataCollectorInterface, Renderable, MessagesAggregateInterface +{ + protected $name; + + protected $records = array(); + + /** + * @param Logger $logger + * @param int $level + * @param boolean $bubble + * @param string $name + */ + public function __construct(Logger $logger = null, $level = Logger::DEBUG, $bubble = true, $name = 'monolog') + { + parent::__construct($level, $bubble); + $this->name = $name; + if ($logger !== null) { + $this->addLogger($logger); + } + } + + /** + * Adds logger which messages you want to log + * + * @param Logger $logger + */ + public function addLogger(Logger $logger) + { + $logger->pushHandler($this); + } + + protected function write(LogRecord $record): void + { + $this->records[] = array( + 'message' => $record['formatted'], + 'is_string' => true, + 'label' => strtolower($record['level_name']), + 'time' => $record['datetime']->format('U') + ); + } + + /** + * @return array + */ + public function getMessages() + { + return $this->records; + } + + /** + * @return array + */ + public function collect() + { + return array( + 'count' => count($this->records), + 'records' => $this->records + ); + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * @return array + */ + public function getWidgets() + { + $name = $this->getName(); + return array( + $name => array( + "icon" => "suitcase", + "widget" => "PhpDebugBar.Widgets.MessagesWidget", + "map" => "$name.records", + "default" => "[]" + ), + "$name:badge" => array( + "map" => "$name.count", + "default" => "null" + ) + ); + } +} diff --git a/code/DebugBar.php b/code/DebugBar.php index 7aa32a6..5944f93 100644 --- a/code/DebugBar.php +++ b/code/DebugBar.php @@ -15,7 +15,7 @@ use SilverStripe\Admin\LeftAndMain; use SilverStripe\View\Requirements; use SilverStripe\Control\Controller; -use DebugBar\Bridge\MonologCollector; +use LeKoala\DebugBar\Bridge\MonologCollector; use SilverStripe\Control\HTTPRequest; use DebugBar\DebugBar as BaseDebugBar; use Symfony\Component\Mailer\MailerInterface;