{"id":21341444,"url":"https://github.com/avto-dev/events-log-laravel","last_synced_at":"2025-07-12T14:34:17.577Z","repository":{"id":44826430,"uuid":"134873016","full_name":"avto-dev/events-log-laravel","owner":"avto-dev","description":"Events logging for laravel applications","archived":false,"fork":false,"pushed_at":"2024-05-14T12:46:07.000Z","size":105,"stargazers_count":6,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-21T03:02:13.936Z","etag":null,"topics":["events","laravel","logging","logstash"],"latest_commit_sha":null,"homepage":null,"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/avto-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-25T15:20:18.000Z","updated_at":"2024-07-24T12:22:08.000Z","dependencies_parsed_at":"2022-09-01T19:10:45.868Z","dependency_job_id":null,"html_url":"https://github.com/avto-dev/events-log-laravel","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avto-dev%2Fevents-log-laravel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avto-dev%2Fevents-log-laravel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avto-dev%2Fevents-log-laravel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avto-dev%2Fevents-log-laravel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avto-dev","download_url":"https://codeload.github.com/avto-dev/events-log-laravel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225824750,"owners_count":17529906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["events","laravel","logging","logstash"],"created_at":"2024-11-22T00:56:52.880Z","updated_at":"2025-07-12T14:34:17.571Z","avatar_url":"https://github.com/avto-dev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://laravel.com/assets/img/components/logo-laravel.svg\" alt=\"Laravel\" width=\"240\" /\u003e\n\u003c/p\u003e\n\n# Events logging for Laravel\n\n[![Version][badge_packagist_version]][link_packagist]\n[![PHP Version][badge_php_version]][link_packagist]\n[![Build Status][badge_build_status]][link_build_status]\n[![Coverage][badge_coverage]][link_coverage]\n[![Downloads count][badge_downloads_count]][link_packagist]\n[![License][badge_license]][link_license]\n\nThis package provides logging for Laravel events (events must implements special interface).\n\n## Install\n\nRequire this package with composer using the following command:\n\n```shell\n$ composer require avto-dev/events-log-laravel \"^3.0\"\n```\n\n\u003e Installed `composer` is required ([how to install composer][getcomposer]).\n\n\u003e You need to fix the major version of package.\n\n## Setup\n\nПосле установки пакета вам необходимо произвести его настройку. Минимальной конфигурацией является добавление в ваш файл `./config/logging.php` значения:\n\n```php\n\u003c?php\n\nreturn [\n    // ...\n\n    'events_channel' =\u003e env('EVENTS_LOG_CHANNEL', 'stack'),\n\n    // ...\n];\n```\n\nГде `stack` - это имя одного из каналов, перечисленного в секции `channels` этого же файла. Без указания данной опции логгирование будет производиться с использованием канала по умолчанию.\n\n\u003e Переопределить данную опцию вы сможете добавив в `.env` файл вашего приложения строку `EVENTS_LOG_CHANNEL=%channel_name%`.\n\nНапример, если вам необходимо производить логгирование событий в отдельный файл в формате `Monolog` и дополнительно вести запись в **другой файл** в формате `Logstash`, то конфигурация может иметь следующий вид:\n\n```php\n\u003c?php\n\nreturn [\n\n    'events_channel' =\u003e env('EVENTS_LOG_CHANNEL', 'events-stack'),\n\n    // ...\n\n    'channels' =\u003e [\n\n        // ...\n\n        'events-stack' =\u003e [\n            'driver'   =\u003e 'stack',\n            'channels' =\u003e ['events-monolog', 'events-logstash'],\n        ],\n\n        'events-monolog' =\u003e [\n            'driver' =\u003e 'single',\n            'path'   =\u003e storage_path('logs/laravel-events.log'),\n            'level'  =\u003e 'debug',\n        ],\n\n        'events-logstash' =\u003e [\n            'driver' =\u003e 'custom',\n            'via'    =\u003e AvtoDev\\EventsLogLaravel\\Logging\\EventsLogstashLogger::class,\n            'path'   =\u003e storage_path('logs/logstash/laravel-events.log'),\n            'level'  =\u003e 'debug',\n        ],\n    ],\n];\n```\n\nДля отправки логов в формате `Logstash` по UDP протоколу:\n\n```php\n\u003c?php\n\nreturn [\n\n    'default' =\u003e env('LOG_CHANNEL', 'app-logstash-udp'),\n\n    'events_channel' =\u003e env('EVENTS_LOG_CHANNEL', 'events-logstash-udp'),\n\n    // ...\n\n    'channels' =\u003e [\n\n        // ...\n\n        'app-logstash-udp' =\u003e [\n            'driver' =\u003e 'custom',\n            'via'    =\u003e AvtoDev\\EventsLogLaravel\\Logging\\DefaultUdpLogstashLogger::class,\n            'host'   =\u003e env('LOGSTASH_UDP_HOST', 'logstash'),\n            'port'   =\u003e (int) env('LOGSTASH_UDP_PORT', 4560),\n            'level'  =\u003e 'debug',\n        ],\n\n        'events-logstash-udp' =\u003e [\n            'driver' =\u003e 'custom',\n            'via'    =\u003e AvtoDev\\EventsLogLaravel\\Logging\\EventsUdpLogstashLogger::class,\n            'host'   =\u003e env('LOGSTASH_UDP_HOST', 'logstash'),\n            'port'   =\u003e (int) env('LOGSTASH_UDP_PORT', 4560),\n            'level'  =\u003e 'debug',\n        ],\n    ],\n];\n```\n\nБолее подробно о настройке логгирования вы можете прочитать по [этой ссылке][laravel_logging].\n\n## Использование\n\nДанный пакет работает следующий образом:\n\n- Сервис-провайдер данного пакета регистрирует свой \"слушатель\" на все события, что происходят в приложении;\n- При получении события он проверяет реализацию класса события интерфейса `ShouldBeLoggedContract`;\n- Если предыдущее условие выполняется - то используя указанный в файле `logging.php` канал логгирования производится запись данных которые возвращают методы, описанные в интерфейсе `ShouldBeLoggedContract`.\n\nПример класса логгируемого события:\n\n```php\n\u003c?php\n\nclass SomeApplicationEvent implements \\AvtoDev\\EventsLogLaravel\\Contracts\\ShouldBeLoggedContract\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function logLevel(): string\n    {\n        return 'info';\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function logMessage(): string\n    {\n        return 'My log message';\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function logEventExtraData(): array\n    {\n        return ['key' =\u003e 'any value'];\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function eventType(): string\n    {\n        return 'default_event';\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function eventSource(): string\n    {\n        return 'service_name';\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function skipLogging() : bool\n    {\n        return false;\n    }\n}\n```\n\nТеперь достаточно в произвольном месте вашего приложения вызвать:\n\n```php\nevent(new SomeApplicationEvent);\n```\n\nИ быть уверенным в том, что данное событие будет записано в лог-файл. О том, как работают события (events) в Laravel вы можете прочитать по [этой ссылке][laravel_events].\n\n### Условия логирования\n\nВ некоторых случаях необходимо добавить условия логгирования события. Для этого вы можете использовать в классе события метод `skipLogging`:\n\n```php\n\u003c?php\n\nclass YourEvent extends AvtoDev\\EventsLogLaravel\\Events\\AbstractLoggableEvent\n{\n    /**\n     * @var int\n     */\n    protected $value = 101;\n\n    /**\n     * {@inheritDoc}\n     */\n    public function logMessage(): string\n    {\n        return 'foo bar';\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    public function skipLogging(): bool\n    {\n        return $this-\u003evalue \u003e 100;\n    }\n\n    // ...\n}\n```\n\n### Дополнительные логгеры\n\nВместе с данным пакетом вам доступны следующие пред-настроенные логгеры `AvtoDev\\EventsLogLaravel\\Logging\\...`:\n\n| Класс логгера              | Назначение                                                                                                             |\n|----------------------------|------------------------------------------------------------------------------------------------------------------------|\n| `DefaultLogstashLogger`    | Пишет лог-записи в формате `logstash` в файл, не видоизменяя тело записи (поле `context` не изменяется)                |\n| `EventsLogstashLogger`     | Пишет лог-записи в формате `logstash` в файл, но данные связанные с событиями помещаются в секцию `event`              |\n| `DefaultUdpLogstashLogger` | Отправляет лог-записи в формате `logstash` по UDP протоколу, не видоизменяя тело записи (поле `context` не изменяется) |\n| `EventsUdpLogstashLogger`  | Пишет лог-записи в формате `logstash` по UDP протоколу, но данные связанные с событиями помещаются в секцию `event`    |\n\n\u003e Более подробно о них смотрите исходный код\n\n### Testing\n\nFor package testing we use `phpunit` framework and `docker` with `compose` plugin as develop environment. So, just write into your terminal after repository cloning:\n\n```bash\n$ make build\n$ make latest # or 'make lowest'\n$ make test\n```\n\n## Changes log\n\n[![Release date][badge_release_date]][link_releases]\n[![Commits since latest release][badge_commits_since_release]][link_commits]\n\nChanges log can be [found here][link_changes_log].\n\n## Support\n\n[![Issues][badge_issues]][link_issues]\n[![Issues][badge_pulls]][link_pulls]\n\nIf you will find any package errors, please, [make an issue][link_create_issue] in current repository.\n\n## License\n\nThis is open-sourced software licensed under the [MIT License][link_license].\n\n[badge_packagist_version]:https://img.shields.io/packagist/v/avto-dev/events-log-laravel.svg?maxAge=180\n[badge_php_version]:https://img.shields.io/packagist/php-v/avto-dev/events-log-laravel.svg?longCache=true\n[badge_build_status]:https://img.shields.io/github/actions/workflow/status/avto-dev/events-log-laravel/tests.yml\n[badge_coverage]:https://img.shields.io/codecov/c/github/avto-dev/events-log-laravel/master.svg?maxAge=60\n[badge_downloads_count]:https://img.shields.io/packagist/dt/avto-dev/events-log-laravel.svg?maxAge=180\n[badge_license]:https://img.shields.io/packagist/l/avto-dev/events-log-laravel.svg?longCache=true\n[badge_release_date]:https://img.shields.io/github/release-date/avto-dev/events-log-laravel.svg?style=flat-square\u0026maxAge=180\n[badge_commits_since_release]:https://img.shields.io/github/commits-since/avto-dev/events-log-laravel/latest.svg?style=flat-square\u0026maxAge=180\n[badge_issues]:https://img.shields.io/github/issues/avto-dev/events-log-laravel.svg?style=flat-square\u0026maxAge=180\n[badge_pulls]:https://img.shields.io/github/issues-pr/avto-dev/events-log-laravel.svg?style=flat-square\u0026maxAge=180\n[link_releases]:https://github.com/avto-dev/events-log-laravel/releases\n[link_packagist]:https://packagist.org/packages/avto-dev/events-log-laravel\n[link_build_status]:https://github.com/avto-dev/events-log-laravel/actions\n[link_coverage]:https://codecov.io/gh/avto-dev/events-log-laravel/\n[link_changes_log]:https://github.com/avto-dev/events-log-laravel/blob/master/CHANGELOG.md\n[link_issues]:https://github.com/avto-dev/events-log-laravel/issues\n[link_create_issue]:https://github.com/avto-dev/events-log-laravel/issues/new/choose\n[link_commits]:https://github.com/avto-dev/events-log-laravel/commits\n[link_pulls]:https://github.com/avto-dev/events-log-laravel/pulls\n[link_license]:https://github.com/avto-dev/events-log-laravel/blob/master/LICENSE\n[laravel_logging]:https://laravel.com/docs/5.6/logging\n[laravel_events]:https://laravel.com/docs/5.6/events\n[getcomposer]:https://getcomposer.org/download/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favto-dev%2Fevents-log-laravel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favto-dev%2Fevents-log-laravel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favto-dev%2Fevents-log-laravel/lists"}