lfbn / logger-trait
A trait that allows you to add logging capabilities to any class.
0.0.1
2020-01-09 16:01 UTC
Requires
- monolog/monolog: ^2.0
- psr/log: ^1.1
Requires (Dev)
- phpunit/phpunit: ^8.5
- roave/security-advisories: dev-master
This package is not auto-updated.
Last update: 2025-04-01 00:44:24 UTC
README
This is a Trait that allows to have logging capabilities in any class.
By default, it uses Monolog and streams to standard output, but you can override this behaviour.
Installation
composer require lfbn/logger-trait
Usage
Using the default behaviour
// In the class you want, add the use of the Trait. use LoggerTrait; (...) // After that, you can use it. $this->logError('Some message...', ['some context']);
Changing name, stream or minimum level
// Implement the following protected properties. /* @var string */ protected static $loggerName = 'my-logger-name'; /* @var string */ protected static $loggerStream = 'php://stdout'; /* @var string */ protected static $loggerMinimumLevel = LogLevel::DEBUG;
Overriding the default behaviour
class MyClass { protected function initLogger(): bool { $this->logger = new \Monolog\Logger('Overriding default logger: '.$this->getLoggerName()); try { $handler = new StreamHandler( $this->getLoggerStream(), $this->getLoggerMinimumLevel() ); $this->logger->pushHandler($handler); } catch (Exception $e) { $this->logger = new NullLogger(); return false; } return true; } }
Inject your own logger
class Test { use \Lfbn\LoggerTrait\LoggerTrait; public function test(): void { $this->logDebug('Hello TEST!'); } } $logger = new \Monolog\Logger('test4-my-own-logger'); try { $handler = new StreamHandler( 'php://stdout', 'debug' ); $logger->pushHandler($handler); } catch (Exception $e) { $logger = new NullLogger(); } $myClass = (new Test()); $myClass->setLogger($logger); $myClass->test();
Interpolate messages
$this->logWarning( self::interpolateMessage( 'Hello my {private} TEST5!', ['private' => 'message'] ), );