feugene/events-log-laravel is a Laravel package for events logging for laravel applications.
It currently has 1 GitHub stars and 44 downloads on Packagist (latest version v3.0.0).
Install it with composer require feugene/events-log-laravel.
Discover more Laravel packages by feugene
or browse all Laravel packages to compare alternatives.
Last updated
This package provides logging for Laravel events (events must implements special interface).
Require this package with composer using the following command:
$ composer require feugene/events-log-laravel "^3.0"
Installed
composeris required (how to install composer).
You need to fix the major version of package.
After an installation you should setup it. Minimal config is following changing in you ./config/logging.php file:
<?php
return [
// ...
'events_channel' => env('EVENTS_LOG_CHANNEL', 'stack'),
// ...
];
Where stack - is a channel name, listed in the channels section of the same file. Without specifying this option,
logging will be performed using the default channel.
You can override this option by adding to
.envfile the line:EVENTS_LOG_CHANNEL=%channel_name%.
For instance, if you need to log events in a different file in the Monolog format and additionally record to another
file in the Logstash format, then the configuration may look like this:
<?php
return [
'events_channel' => env('EVENTS_LOG_CHANNEL', 'events-stack'),
// ...
'channels' => [
// ...
'events-stack' => [
'driver' => 'stack',
'channels' => ['events-monolog', 'events-logstash'],
],
'events-monolog' => [
'driver' => 'single',
'path' => storage_path('logs/laravel-events.log'),
'level' => 'debug',
],
'events-logstash' => [
'driver' => 'custom',
'via' => Feugene\EventsLogLaravel\Logging\EventsLogstashLogger::class,
'path' => storage_path('logs/logstash/laravel-events.log'),
'level' => 'debug',
],
],
];
To send logs in the Logstash format over UPD:
<?php
return [
'default' => env('LOG_CHANNEL', 'app-logstash-udp'),
'events_channel' => env('EVENTS_LOG_CHANNEL', 'events-logstash-udp'),
// ...
'channels' => [
// ...
'app-logstash-udp' => [
'driver' => 'custom',
'via' => Feugene\EventsLogLaravel\Logging\DefaultUdpLogstashLogger::class,
'host' => env('LOGSTASH_UDP_HOST', 'logstash'),
'port' => (int) env('LOGSTASH_UDP_PORT', 4560),
'level' => 'debug',
],
'events-logstash-udp' => [
'driver' => 'custom',
'via' => Feugene\EventsLogLaravel\Logging\EventsUdpLogstashLogger::class,
'host' => env('LOGSTASH_UDP_HOST', 'logstash'),
'port' => (int) env('LOGSTASH_UDP_PORT', 4560),
'level' => 'debug',
],
],
];
You can read more about Laravel Logging at source.
This package works as follows:
ShouldBeLoggedContract interface;ShouldBeLoggedContract interface, then using the specified in the
file logging.php the logging channel, is being performed writing data;Example of a logged event class:
<?php
class SomeApplicationEvent implements \Feugene\EventsLogLaravel\Contracts\ShouldBeLoggedContract
{
/**
* {@inheritdoc}
*/
public function logLevel(): string
{
return 'info';
}
/**
* {@inheritdoc}
*/
public function logMessage(): string
{
return 'My log message';
}
/**
* {@inheritdoc}
*/
public function logEventExtraData(): array
{
return ['key' => 'any value'];
}
/**
* {@inheritdoc}
*/
public function eventType(): string
{
return 'default_event';
}
/**
* {@inheritdoc}
*/
public function eventSource(): string
{
return 'service_name';
}
public function eventTags(): array
{
return [];
}
}
Now it is enough to call at any place in your application:
event(new SomeApplicationEvent());
And be sure that this event will be recorded in a log file.
In some cases, it is necessary to add logging conditions to event. To do this, you can use the
skipLogging method in the event class:
<?php
class YourEvent implements \Feugene\EventsLogLaravel\Contracts\ShouldBeLoggedContract
{
/**
* @var int
*/
protected $value = 101;
/**
* {@inheritDoc}
*/
public function logMessage(): string
{
return 'foo bar';
}
/**
* {@inheritDoc}
*/
public function skipLogging(): bool
{
return $this->value > 100;
}
// ...
}
Together with this package, the following pre-configured loggers are available to
you Feugene\EventsLogLaravel\Logging\...:
Logger's class | Appointment
-------------------------- | ----------
DefaultLogstashLogger | Writes logs in the logstash format to a file, without modifying the body of the record (field context)
EventsLogstashLogger | Writes logs in the logstash format to a file, but the event-related data is placed in the event section
DefaultUdpLogstashLogger | Sends logs in the logstash format over UPD protocol, without modifying record's body (field context)
EventsUdpLogstashLogger | Writes logs in the logstash format to a file over UDP protocol, but the event-related data is placed in the event section
For package testing we use phpunit framework and docker-ce + docker-compose as develop environment. So, just write
into your terminal after repository cloning:
$ make build
$ make latest # or 'make lowest'
$ make test
Changes log can be found here.
If you will find any package errors, please, make an issue in current repository.
This is open-sourced software licensed under the MIT License.