Monolog adapter for Bitrix CMS
Clone or download
niksamokhvalov Merge pull request #4 from mmjurov/fix-declaration
Fix declaration of \Bex\Monolog\ExceptionHandlerLog::write according to the last bitrix version (16.5.6)
Latest commit 112d652 Oct 14, 2016

README.md

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