sibirsky87/yii-monolog

Extension for using monolog with yii 1.x

Installs: 22

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 4

Type:package

v2.0.1 2021-09-03 08:54 UTC

This package is auto-updated.

Last update: 2024-05-25 17:26:33 UTC


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

  1. Add the component to the preload list
<?php 

return [
    'preload' => [
        'monolog',
    ],
];
  1. 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',
            ],
        ],
    ],
];
  1. Add log route
<?php
return [
    'components' => [
        'log' => [
            'class' => 'CLogRouter',
            'routes' => [
                'monolog' => [
                    'class' => 'YiiMonolog\MonologLogRoute',
                ],
            ],
        ],
    ],
];
  1. Add exception handler
<?php
return [
    'components' => [
        'errorHandler' => [
            'class' => 'YiiMonolog\MonologErrorHandler',
            'errorAction' => 'site/error',
        ],
    ],
];
  1. 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");