Monolog adapter for Bitrix CMS
, (*1)
Monolog adapter for Bitrix CMS:, (*2)
- 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:, (*3)
composer require bitrix-expert/monolog-adapter
Write in the init.php file:, (*4)
<?php
\Bex\Monolog\MonologAdapter::loadConfiguration();
Usage
Configuring your loggers
Configurate the logger in the .settings.php:, (*5)
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:, (*6)
'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:, (*7)
'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:, (*8)
<?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:, (*9)
, (*10)
Requirements
- PHP >= 5.3
- Bitrix CMS >= 16.5.6