APM & Logging for Laravel powered by Logstash

3.2.0 2021-11-18 15:23 UTC

This package is auto-updated.

Last update: 2021-11-18 15:24:59 UTC


This library adapts Monolog for Laravel to communicate with Logstash for logging & metrics.


composer require customergauge/logstash



In the logging.php, define a custom channel for Laravel

'http' => [
    'driver' => 'custom',
    'via' => LogstashLoggerFactory::class,
    'address' => sprintf('tcp://%s:9601', env('LOGSTASH_ADDRESS')),
    'processor' => env('LOGSTASH_PROCESSOR'),

This will instruct Laravel to write any log to Logstash using a TCP connection on port 9601. TCP will guarantee log delivery. Processors allow to manipulate the $record array that gets sent to Logstash as JSON. The processor attribute accept http or queue values.


The library also allows to collect application metrics using an apm configuration inside the logging.php file.

    'apm' => [
        'enable' => env('LOGSTASH_APM_ENABLE', true),
        'address' => sprintf('udp://%s:9602', env('LOGSTASH_ADDRESS')),

For metrics, the above configuration will instruct Laravel to use an UDP conncetion as a way to fire-and-forget. Delivery is not guaranteed, but code execution is not delayed by acknowledging metric delivery.


You may configure Http and Queue processors. Processors must implement the \CustomerGauge\Logstash\Processors\HttpProcessorInterface or the \CustomerGauge\Logstash\Processors\QueueProcessorInterface. They offer the chance to modify the $record that will be streamed to Logstash by using the ProcessorInterface system provided by Monolog.