sibirsky87 / yii-monolog
Extension for using monolog with yii 1.x
v2.0.1
2021-09-03 08:54 UTC
Requires
- php: >=7.4
- monolog/monolog: *
README
Inspired by enlitepro/enlite-monolog and smartapps-fr/yii-monolog
Install
The recommended way to install is through composer from command line.
composer require asuran/yii-monolog
Usage
- Add the component to the preload list
<?php return [ 'preload' => [ 'monolog', ], ];
- Configure the component
<?php return [ 'components' => [ 'monolog' => [ 'class' => 'YiiMonolog\MonologComponent', 'name' => 'MyApplication', 'handlers' => [ 'file' => [ 'class' => 'Monolog\Handler\StreamHandler', 'stream' => '/runtime/app.log', 'formatter' => 'Monolog\Formatter\LineFormatter', ], static function () { /** @var StreamHandler $stream */ $stream = Yii::createComponent([ 'class' => RotatingFileHandler::class, ], Yii::app()->runtimePath.'/application.log', 10); $formatter = Yii::createComponent([ 'class' => LineFormatter::class, ]); $stream->setFormatter($formatter); return $stream; } ], 'processors' => [ 'Monolog\Processor\ProcessIdProcessor', ], ], ], ];
- Add log route
<?php return [ 'components' => [ 'log' => [ 'class' => 'CLogRouter', 'routes' => [ 'monolog' => [ 'class' => 'YiiMonolog\MonologLogRoute', ], ], ], ], ];
- Add exception handler
<?php return [ 'components' => [ 'errorHandler' => [ 'class' => 'YiiMonolog\MonologErrorHandler', 'errorAction' => 'site/error', ], ], ];
- Use it
<?php # Using info with variables Yii::log("A new store user did a self-register on the system", \Monolog\Logger::INFO, [ 'id' => $form->usuario->id, 'category' => 'users', ]); # Using debug with variables Yii::log("Info about the new store user created", \Monolog\Logger::DEBUG, [ 'id' => $form->usuario->id, 'cnpj' => $form->usuario->usu_login, 'email' => $form->usuario->usu_email, 'category' => 'users', ]); # Using error without variables. # System will convert the 3th parameter in "category" parameter and store it as an array of variables # This first example keeps the Yii::log compatible with old logs in your system Yii::log("File not found", CLogger::LEVEL_ERROR, "command.gearman"); # This another example allows to use all monolog levels for messages Yii::log("File not found", \Monolog\Logger::ERROR, "command.gearman");