hedii/laravel-gelf-logger

A Laravel package to send logs to a gelf compatible backend like graylog

Maintainers

👁 hedii

Package info

github.com/hedii/laravel-gelf-logger

pkg:composer/hedii/laravel-gelf-logger

Statistics

Installs: 3 615 365

Dependents: 10

Suggesters: 0

Stars: 135

Open Issues: 1

13.0.0 2026-03-20 11:13 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 482bac51f2d4648c1bde9013a3c512db1ccaa488

logloggingphplaraveludpgraylog2grayloggelfhediilaravel-gelf


README

👁 Build Status
👁 Total Downloads
👁 License
👁 Latest Stable Version

Laravel laravel-gelf-logger
5.6 ^3.0
5.8 ^3.1
6.0 ^4.0
7.0 ^5.0
8.0 ^5.3
8.0 ^6.0 (with php 8)
9.0 ^7.0
10.0 ^8.0
11.0 ^9.0
12.0 ^10.0
13.0 ^13.0

A package to send gelf logs to a gelf compatible backend like graylog. It is a Laravel wrapper for bzikarsky/gelf-php package.

It uses the new Laravel custom log channel introduced in Laravel 5.6.

A gelf receiver like graylog2 must be configured to receive messages with a GELF UDP, TCP or HTTP Input.

Table of contents

Installation

Install via composer

composer require hedii/laravel-gelf-logger

Edit config/logging.php to add the new gelf log channel.

return [
 'default' => env('LOG_CHANNEL', 'stack'),

 'channels' => [
 // You can use the gelf log channel with the stack log channel
 'stack' => [
 'driver' => 'stack',
 'channels' => ['daily', 'gelf'],
 ],

 // other log channels...

 'gelf' => [
 'driver' => 'custom',

 'via' => \Hedii\LaravelGelfLogger\GelfLoggerFactory::class,

 // This optional option determines the processors that should be
 // pushed to the handler. This option is useful to modify a field
 // in the log context (see NullStringProcessor), or to add extra
 // data. Each processor must be a callable or an object with an
 // __invoke method: see monolog documentation about processors.
 // Default is an empty array.
 'processors' => [
 \Hedii\LaravelGelfLogger\Processors\NullStringProcessor::class,
 \Hedii\LaravelGelfLogger\Processors\RenameIdFieldProcessor::class,
 // another processor...
 ],

 // This optional option determines the minimum "level" a message
 // must be in order to be logged by the channel. Default is 'debug'
 'level' => 'debug',

 // This optional option determines the channel name sent with the
 // message in the 'facility' field. Default is equal to app.env
 // configuration value
 'name' => 'my-custom-name',

 // This optional option determines the system name sent with the
 // message in the 'source' field. When forgotten or set to null,
 // the current hostname is used.
 'system_name' => null,

 // This optional option determines if you want the UDP, TCP or HTTP
 // transport for the gelf log messages. Default is UDP
 'transport' => 'udp',

 // This optional option determines the host that will receive the
 // gelf log messages. Default is 127.0.0.1
 'host' => '127.0.0.1',

 // This optional option determines the port on which the gelf
 // receiver host is listening. Default is 12201
 'port' => 12201,
 
 // This optional option determines the chunk size used when
 // transferring message via UDP transport. Default is 1420.
 'chunk_size' => 1420,

 // This optional option determines the path used for the HTTP
 // transport. When forgotten or set to null, default path '/gelf'
 // is used.
 'path' => null,
 
 // This optional option enable or disable ssl on TCP or HTTP
 // transports. Default is false.
 'ssl' => false,
 
 // If ssl is enabled, the following configuration is used.
 'ssl_options' => [
 // Enable or disable the peer certificate check. Default is
 // true.
 'verify_peer' => true,
 
 // Path to a custom CA file (eg: "/path/to/ca.pem"). Default
 // is null.
 'ca_file' => null,
 
 // List of ciphers the SSL layer may use, formatted as
 // specified in ciphers(1). Default is null.
 'ciphers' => null,
 
 // Whether self-signed certificates are allowed. Default is
 // false.
 'allow_self_signed' => false,
 ],
 
 // If you want to send messages to the gelf server using http basic
 // authentication, the following configuration is used. Only useful
 // if transport is set to http.
 'http_basic_auth' => [
 // The http basic authentication username.
 'username' => null,
 
 // The http basic authentication password.
 'password' => null,
 ],

 // This optional option determines the maximum length per message
 // field. When forgotten or set to null, the default value of 
 // \Monolog\Formatter\GelfMessageFormatter::DEFAULT_MAX_LENGTH is
 // used (currently this value is 32766)
 'max_length' => null,

 // This optional option determines the prefix for 'context' fields
 // from the Monolog record. Default is null (no context prefix)
 'context_prefix' => null,

 // This optional option determines the prefix for 'extra' fields
 // from the Monolog record. Default is null (no extra prefix)
 'extra_prefix' => null,
 
 // This optional option determines whether errors thrown during
 // logging should be ignored or not. Default is true.
 'ignore_error' => true,

 ],
 ],
];

Usage

Once you have modified the Laravel logging configuration, you can use the gelf log channel as any Laravel log channel.

Example

// Explicitly use the gelf channel
Log::channel('gelf')->debug($message, ['foo' => 'bar']);
Log::channel('gelf')->emergency($message, ['foo' => 'bar']);

// In case of a stack log channel containing the gelf log channel and stack
// configured as the default log channel
Log::notice($message, ['foo' => 'bar']);

// Using the logger helper
logger($message, $context);

Testing

composer test

License

laravel-gelf-logger is released under the MIT Licence. See the bundled LICENSE file for details.