/monolog-adapter

Monolog adapter for Bitrix CMS

Primary LanguagePHPMIT LicenseMIT

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 markiros/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