healthengine / laravel-logging
logging stack for Laravel
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- illuminate/log: ^10.0 || ^11.0
- illuminate/queue: ^10.0 || ^11.0
- illuminate/support: ^10.0 || ^11.0
- monolog/monolog: ^3.1
Requires (Dev)
- ext-json: *
- composer/semver: ^3.0
- orchestra/testbench: ^8.0 || ^9.0
- phpunit/phpunit: ^10.5
README
This is a custom package designed for Laravel. It provides a logging stack pre-configured to format for Logstash and adds multiple useful Monolog processors.
It includes the following processors to enrich logs with extra data:
- MemoryPeakUsageProcessor
which adds the peak memory usage using the
memory_get_peak_usage()
PHP function, - MemoryUsageProcessor
which adds the current memory usage using the
memory_get_usage()
PHP function, - UidProcessor which adds a unique ID to each instance of the logger class - useful to track all logs across a single request,
- WebProcessor which adds the current request URI, request method and client IP to a log record,
- BuildTagProcessor which is designed for use in docker and will add the image tag to the logs.
- IntrospectionProcessor which adds the file, class, function and line where the log was triggered.
Usage
A logstash_single
, logstash_stderr
, and logstash_stdout
logger have been made available for use as logging channels. You can use these in a stack
along with some others or use them standalone. Simply set your LOG_CHANNEL
environment variable to either of those
pre-configured channels.
To customise configuration of these channels,
copy the contents of laravel-logging.php
to the channels
key in the application's
config/logging.php
file.
The logstash_stderr
channel includes a formatter for Logstash, the only difference compared to the logstash
channel is that
the log lines go to STDERR instead of to a file. This is useful for a Laravel application running in docker.
The logstash_stdout
channel includes a formatter for Logstash, the only difference compared to the logstash
channel is that
the log lines go to STDOUT instead of to a file. This is useful for a Laravel application running in docker.
Note: The logstash_stdout
channel cannot be used with PHP FPM processes because PHP FPM makes STDOUT unavailable internally.
Note: The BuildTagProcessor
requires you to inject the Docker build tag into build_tag
key in config/app.php
. If
it is not present, the value is not added to the logs.
License
Laravel Logging is licensed under the MIT license.