Skip to content

bitrix-expert/monolog-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monolog adapter for Bitrix CMS

Build Status Latest Stable Version Total Downloads License

Monolog adapter for Bitrix CMS:

  • Bitrix handler and formatter for Monolog.
  • Handler for logger uncaught exceptions of the Bitrix.
  • Configuration loggers with using the .settings.php.

Installation

Download the library using Composer:

composer require bitrix-expert/monolog-adapter

Write in the init.php file:

<?php

\Bex\Monolog\MonologAdapter::loadConfiguration();

Usage

Configuring your loggers

Configurate the logger in the .settings.php:

return array(
    'exception_handling' => array(
        'value' => array(
            'log' => array(
                'class_name' => '\Bex\Monolog\ExceptionHandlerLog',
                'settings' => array(
                    'logger' => 'app'
                ),
            ),
        ),
        'readonly' => false
    ),
    'monolog' => array(
        'value' => array(
            'handlers' => array(
                'default' => array(
                    'class' => '\Monolog\Handler\StreamHandler',
                    'level' => 'DEBUG',
                    'stream' => '/path/to/logs/app.log'
                ),
                'feedback_event_log' => array(
                    'class' => '\Bex\Monolog\Handler\BitrixHandler',
                    'level' => 'DEBUG',
                    'event' => 'TYPE_FOR_EVENT_LOG',
                    'module' => 'vendor.module'
                ),
            ),
            'loggers' => array(
                'app' => array(
                    'handlers'=> array('default'),
                ),
                'feedback' => array(
                    'handlers'=> array('feedback_event_log'),
                )
            )
        ),
        'readonly' => false
    )
);

Use rules property for filter logging uncaught exceptions by instanceof logic:

'exception_handling' => array(
    'value' => array(
        'log' => array(
            'class_name' => '\Bex\Monolog\ExceptionHandlerLog',
            'settings' => array(
                'logger' => 'app',
                'rules' => array(
                    'instanceof' => '\Vendor\Exception\UnloggedInterface', // or opposite: !instanceof
                )
            ),
        ),
    ),
    'readonly' => false
)

Use context property for change log debug data format:

'exception_handling' => array(
    'value' => array(
        'log' => array(
            'class_name' => '\Bex\Monolog\ExceptionHandlerLog',
            'settings' => array(
                'logger' => 'app',
                'context' => function ($exception) {
                     return array(
                         'file' => $exception->getFile(),
                         'line' => $exception->getLine(),
                         'trace' => $exception->getTrace(),
                         'some_param' => $exception->getSomeParam(),
                     );
                 },
            ),
        ),
    ),
    'readonly' => false
)

Write logs

Write logs from your application. For example, write logs when created new message from the feedback form:

<?php

use Monolog\Registry;

$logger = Registry::getInstance('feedback');

// Write info message with context: invalid message from feedback
$logger->info('Failed create new message on feedback form', array(
    'item_id' => 21,
    'Invalid data' => $addResult->getErrorMessages(), // error savings
    'Form data' => $formRequest // data from feedback form
));

The result in the Control Panel of Bitrix:

Event Log

Requirements

  • PHP >= 5.3
  • Bitrix CMS >= 16.5.6