<?php use Bartlett\Reflect; use Bartlett\Reflect\Plugin\Log\LogPlugin; // Optional plugin configuration $opt = array(); $reflect = new Reflect; $reflect->addSubscriber( new LogPlugin($logger, $opt) );
Where $logger
is an instance of object that must implement interface
Psr\Log\LoggerInterface
(PSR-3).
And $opt
is an array to configure what events and its details you would like to have.
Event | Log Level | Message Template (with/without placeholders) |
---|---|---|
reflect.progess | Psr3\Log\Level\LogLevel::INFO | Parsing file "{file}" in progress. |
reflect.success | Psr3\Log\Level\LogLevel::INFO | AST built. |
reflect.cache | Psr3\Log\Level\LogLevel::INFO | AST built by a previous request. |
reflect.error | Psr3\Log\Level\LogLevel::ERROR | Parser has detected an error on file "{file}". "{error}". |
reflect.complete | Psr3\Log\Level\LogLevel::NOTICE | Parsing data source "{source}" completed. |
For example, if you want to deactivate logging on reflect.success
event, then give the following options :
<?php $opt = array( 'reflect.success' => false, );
Or, if you don’t want to have contextual data sent to logger :
<?php $opt = array( 'reflect.success' => array( 'level' => LogLevel::INFO, 'template' => 'AST built.', 'context' => false, ), );
Use your own logger, that must be compatible PSR-3.
<?php use Bartlett\Reflect; use Bartlett\Reflect\Plugin\Log\LogPlugin; use Psr\Log\AbstractLogger; class YourLogger extends AbstractLogger { private $channel; public function __construct($name = 'YourLoggerChannel') { $this->channel = $name; } public function log($level, $message, array $context = array()) { error_log( sprintf( '%s.%s: %s', $this->channel, strtoupper($level), $this->interpolate($message, $context) ) ); } protected function interpolate($message, array $context = array()) { // build a replacement array with braces around the context keys $replace = array(); foreach ($context as $key => $val) { $replace['{' . $key . '}'] = $val; } // interpolate replacement values into the message and return return strtr($message, $replace); } } // Create the main logger $logger = new YourLogger('Reflect'); // Optional plugin configuration $opt = array(); $reflect = new Reflect; $reflect->addSubscriber( new LogPlugin($logger, $opt) );
Use one of the most famous logging solution compatible PSR-3.
<?php use Bartlett\Reflect; use Bartlett\Reflect\Plugin\Log\LogPlugin; use Monolog\Logger; use Monolog\Handler\StreamHandler; // Create some handlers $stream = new StreamHandler('/var/logs/phpreflect.log'); // Create the main logger $logger = new Logger('Reflect'); $logger->pushHandler($stream); // Optional plugin configuration $opt = array(); $reflect = new Reflect; $reflect->addSubscriber( new LogPlugin($logger, $opt) );
![]() | |
If you want to use Monolog with Reflect on CLI mode, then you should use a wrapper like this. |
<?php use Monolog\Logger; use Monolog\Handler\StreamHandler; class YourLogger extends Logger { public function __construct($name = 'YourLoggerChannel') { $stream = new StreamHandler('/var/logs/phpreflect.log'); parent::__construct($name, array($stream)); } }