{"id":42445208,"url":"https://github.com/itrukhin/bxmonolog","last_synced_at":"2026-01-28T07:47:53.884Z","repository":{"id":56540037,"uuid":"309140549","full_name":"itrukhin/bxmonolog","owner":"itrukhin","description":"Monolog logger for 1C-Bitrix with Telegram","archived":false,"fork":false,"pushed_at":"2024-08-29T06:38:12.000Z","size":35,"stargazers_count":7,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T11:35:42.894Z","etag":null,"topics":["1c-bitrix","bitrix","bitrix-cms","logging","monolog","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"http://itrukhin.ru","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itrukhin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-11-01T16:40:57.000Z","updated_at":"2025-08-08T04:20:42.000Z","dependencies_parsed_at":"2023-02-14T19:31:12.009Z","dependency_job_id":null,"html_url":"https://github.com/itrukhin/bxmonolog","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/itrukhin/bxmonolog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itrukhin%2Fbxmonolog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itrukhin%2Fbxmonolog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itrukhin%2Fbxmonolog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itrukhin%2Fbxmonolog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itrukhin","download_url":"https://codeload.github.com/itrukhin/bxmonolog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itrukhin%2Fbxmonolog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28842822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T07:39:25.367Z","status":"ssl_error","status_checked_at":"2026-01-28T07:39:24.487Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["1c-bitrix","bitrix","bitrix-cms","logging","monolog","telegram","telegram-bot"],"created_at":"2026-01-28T07:47:49.376Z","updated_at":"2026-01-28T07:47:53.878Z","avatar_url":"https://github.com/itrukhin.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Адаптер [Monolog](https://github.com/Seldaek/monolog) для 1С-Битрикс\n\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/itrukhin/bxmonolog/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/itrukhin/bxmonolog/?branch=master)\n[![Build Status](https://scrutinizer-ci.com/g/itrukhin/bxmonolog/badges/build.png?b=master)](https://scrutinizer-ci.com/g/itrukhin/bxmonolog/build-status/master)\n[![Code Intelligence Status](https://scrutinizer-ci.com/g/itrukhin/bxmonolog/badges/code-intelligence.svg?b=master)](https://scrutinizer-ci.com/code-intelligence)\n\nАдаптер позволяет организовать запись и хранение файлов логов в Битриксе. Основные возможности:\n* Хранение всех логов в выделенной специальной папке на сервере\n* Автоматическое создание вложенных папок для группировки файлов логов\n* Ошибки ядра 1С-Битрикс пишутся во вложенную папку bitrix, которую можно переназначить\n* Каждый день логи пишутся в отдельный файл вида YYYY-MM-DD.log\n* Автоматическое удаление файлов логов старше N дней\n* Конфигурирование через глобальные переменные $_ENV, например с помощью [Dotenv](https://dev.1c-bitrix.ru/community/webdev/user/42376/blog/39344/)\n* Аварийный лог inner_error.log для ошибок самого логгера \n\n## Установка\n```bash\ncomposer require itrukhin/bxmonolog:dev-master\n```\nПредполагается, что у вас Битрикс уже умеет работать с автозагрузкой composer\n\n## Настройка .settings.php\n```php\n'exception_handling' =\u003e \n  array (\n    'value' =\u003e \n    array (\n      'debug' =\u003e ((bool) $_ENV['APP_DEBUG']),\n      'handled_errors_types' =\u003e E_ALL \u0026 ~E_WARNING \u0026 ~E_NOTICE \u0026 ~E_STRICT \u0026 ~E_USER_NOTICE \u0026 ~E_DEPRECATED,\n      'exception_errors_types' =\u003e E_ALL \u0026 ~E_NOTICE \u0026 ~E_WARNING \u0026 ~E_STRICT \u0026 ~E_USER_WARNING \u0026 ~E_USER_NOTICE \u0026 ~E_COMPILE_WARNING \u0026 ~E_DEPRECATED,\n      'ignore_silence' =\u003e false,\n      'assertion_throws_exception' =\u003e true,\n      'assertion_error_type' =\u003e 256,\n      'log' =\u003e \n      array (\n        'class_name' =\u003e '\\App\\Monolog\\ExceptionHandlerLog',\n      ),\n    ),\n    'readonly' =\u003e false,\n  ),\n```\n\n## Настройки окружения\n* **APP_DEBUG** - включить/выключить отладку, используется только в `.settings.php`\n* **APP_DEBUG_LEVEL** - минимальный уровень, для которого будет выполняться запись в лог. По умолчанию `DEBUG`, это значит, что будут выводиться все ошибки. Можно на проде, например, ограничить уровнем `ERROR`\n* **APP_LOG_FOLDER** - папка логов, относительно `DOCUMENT_ROOT`. По умолчанию `/log/`\n* **APP_LOG_BITRIX_CHANNEL** - подпапка логов по умолчанию. Если не задано, будет создана папка `bitrix`, относительно `APP_LOG_FOLDER`. Для записи своих логов рекомендуется явно указывать папку, так как в папку `bitrix` будут записываться ошибки ядра.\n\n# Примеры использования\nКод примеров есть в папке [examples](examples/)\n\nПри настроенном `.settings.php` (см. выше) все ошибки битрикса будут записываться в файл\n```bash\nDOCUMENT_ROOT/APP_LOG_FOLDER/APP_LOG_BITRIX_CHANNEL/YYYY-MM-DD.log\n```\nчто, по умолчанию, соответствует пути `/log/bitrix/` от корня сервера. Ошибки ядра имеют уровень `CRITICAL`\n\nДля записи произвольных логов необходимо вначале создать экземпляр объекта лога\n```php\n$log = new \\App\\Log('test');\n```\nгде test - имя папки, относительно `APP_LOG_FOLDER`, в которую будут писаться логи. Подапка, при ее отсутствии, будет создана автоматически. По возможности, будут установлены аттрибуты `BX_DIR_PERMISSIONS`\n\nДалее для каждого уровня лога может быть вызван одноименный метод, например:\n\n```php\n$log-\u003einfo('log info message');\n$log-\u003edebug($_SERVER);\n$log-\u003ealert([1, 2]);\n$log-\u003enotice(\\Bitrix\\Main\\Application::getConnection());\n```\nВ результате мы получаем файлы логов с отформатированным содержимым, пример:\n\n```\nCRITICAL 12.11.2020 11:02:01\nBitrix\\Main\\DB\\SqlQueryException: Mysql query error: []  in /var/www/html/bitrix/modules/main/classes/mysql/database.php:183\nStack trace:\n#0 /var/www/html/bitrix/modules/statistic/classes/mysql/stoplist.php(223): CDatabaseMysql-\u003eQuery()\n#1 /var/www/html/bitrix/modules/main/classes/general/module.php(480): CStoplist::Check()\n#2 /var/www/html/bitrix/modules/main/include.php(303): ExecuteModuleEventEx()\n#3 /var/www/html/bitrix/modules/main/include/prolog_before.php(14): require_once('/var/www/html/b...')\n#4 /var/www/html/local/scripts/1c_parser.php(14): require('/var/www/html/b...')\n#5 {main}\n------------------------------------------------------------------------\nCRITICAL 12.11.2020 11:02:01\nBitrix\\Main\\DB\\SqlQueryException: Mysql query error: []  in /var/www/html/bitrix/modules/main/classes/mysql/database.php:183\nStack trace:\n#0 /var/www/html/bitrix/modules/statistic/classes/mysql/stoplist.php(223): CDatabaseMysql-\u003eQuery()\n#1 /var/www/html/bitrix/modules/main/classes/general/module.php(480): CStoplist::Check()\n#2 /var/www/html/bitrix/modules/main/include.php(303): ExecuteModuleEventEx()\n#3 /var/www/html/bitrix/modules/main/include/prolog_before.php(14): require_once('/var/www/html/b...')\n#4 /var/www/html/local/scripts/yml_cli.php(17): require('/var/www/html/b...')\n#5 {main}\n------------------------------------------------------------------------\n```\n# Отправка ошибок в Telegram\nДля оперативной реакции на ошибки, необходимо узнавать о них сразу, как только они возникли. Одним из удобных способов \nявляется отправка ошибок в чат Telegram. О возникновении ошибки на сайте немедленно будут проинформированы все участники чата.\n\n## Настройка Telegram\nНеобходимо создать бота в телеграм с помощью [@BotFather](https://core.telegram.org/bots#3-how-do-i-create-a-bot). Для бота мы получим \nAPI Token вида `000000000:XXXXXXXXXXXXXXXXXXXX`. Далее нужно создать чат, в который бот будет писать сообщения, и добавить бота администратором в этот чат.\nВторой параметр, который нам необходимо получить - это ChatID. Получить его можно выполнив запрос вида `https://api.telegram.org/botXXX:YYYYY/getUpdates`,\nгде `XXX:YYYYY` - это API Token бота. В ответ будет json, из которого нужно получить ChatID.\n\n**Пример ответа**\n```json\n{\"ok\":true,\"result\":[{\"update_id\":81329501,\n\"message\":{\"message_id\":975,\"from\":{\"id\":962548471,\"is_bot\":false,\"first_name\":\"Trajano\",\"last_name\":\"Roberto\",\"username\":\"TrajanoRoberto\",\"language_code\":\"en\"},\"chat\":{\"id\":-1001202656383,\"title\":\"R\\u00e1dioRN - A voz da na\\u00e7\\u00e3o!\",\"type\":\"supergroup\"},\"date\":1587454914,\"left_chat_participant\":{\"id\":1215098445,\"is_bot\":true,\"first_name\":\"MediaFlamengoRawBot\",\"username\":\"MediaFlamengoRawBot\"},\"left_chat_member\":{\"id\":1215098445,\"is_bot\":true,\"first_name\":\"MediaFlamengoRawBot\",\"username\":\"MediaFlamengoRawBot\"}}},{\"update_id\":81329502,\n\"message\":{\"message_id\":976,\"from\":{\"id\":962548471,\"is_bot\":false,\"first_name\":\"Trajano\",\"last_name\":\"Roberto\",\"username\":\"TrajanoRoberto\",\"language_code\":\"en\"},\"chat\":{\"id\":-1001202656383,\"title\":\"R\\u00e1dioRN - A voz da na\\u00e7\\u00e3o!\",\"type\":\"supergroup\"},\"date\":1587454932,\"new_chat_participant\":{\"id\":1215098445,\"is_bot\":true,\"first_name\":\"MediaFlamengoRawBot\",\"username\":\"MediaFlamengoRawBot\"},\"new_chat_member\":{\"id\":1215098445,\"is_bot\":true,\"first_name\":\"MediaFlamengoRawBot\",\"username\":\"MediaFlamengoRawBot\"},\"new_chat_members\":[{\"id\":1215098445,\"is_bot\":true,\"first_name\":\"MediaFlamengoRawBot\",\"username\":\"MediaFlamengoRawBot\"}]}}]}\n```\nнас интересует **\"chat\":{\"id\":-1001202656383,\"title\"...** ChatID это `-1001202656383`\n\n## Настройка BxMonolog\nЗа настройку параметров отправки сообщений в Telegram отвечают следующие параметры $_ENV\n* **APP_LOG_TELEGRAM** - включить/выключить отправку в Telegram. Должно быть установлено в **1**, или **true**, или **on**\n* **APP_LOG_TELEGRAM_KEY** - API Token бота\n* **APP_LOG_TELEGRAM_CHATID** - ChatID\n\n## Отправка в Telegram\nДля отправки сообщение в телеграм, реализован метод telegram, аналогичный методу log в PSR-3\n```php\n$log = new \\App\\Log('test');\ntry {\n    // my code\n} catch(Exception $e) {\n    $log-\u003etelegram(\\Psr\\Log\\LogLevel::ERROR, $e, ['source' =\u003e 'my code error'])\n}\n```\nРезультатом будет запись ошибки в лог и сообщение в Telegram, начинающееся с _my code error_ и содержащее текст ошибки, имя файла. Также можно писать любой текст.\nПо умолчанию включен формат отправки HTML, включены уведомления, отключена ссылка на просмотр сообщения в вебе. Указывать source не обязательно. \n\n### Настройки, которые можно передавать через массив context\n* source - начало сообщения в Telegram\n* parse_mode - по умолчанию HTML, но может быть null, Markdown, MarkdownV2\n* disable_notification - boolean, по умолчанию false\n* disable_preview - boolean, по умолчанию true\n\nТакже можно получить экземпляр логгера, с настройками по умолчанию, только для отправки сообщений в Telegram\n```php\n$log = new \\App\\Log('telegram-messenger');\n```\n\n# Очистка логов\nДля периодической очистки логов можно использовать метод \n```php\n\\App\\Log::cleanLogs(15);\n```\nКоторый будет удалять файлы логов старше 15 дней. Метод возвращает строку вызова самого себя, поэтому может быть добавлен в агенты Битрикса.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitrukhin%2Fbxmonolog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitrukhin%2Fbxmonolog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitrukhin%2Fbxmonolog/lists"}