How to log data in JSON in Laravel

Better Stack Team
Updated on February 17, 2023

Logging data in JSON format in Laravel can be done using the built-in Monolog logging library that Laravel uses under the hood.

Here are the steps to configure Laravel to log data in JSON format:

  1. Open the config/logging.php file in your Laravel project.
  2. In the channels array, create a new channel for logging in JSON format:
'json' => [
    'driver' => 'daily',
    'path' => storage_path('logs/laravel.json'),
    'level' => 'debug',
    'days' => 14,

This configuration sets up a new channel named json that logs data in a daily rotating file located in the storage/logs directory with a name laravel.json. The logging level is set to debug and logs will be retained for 14 days.

  1. Update the stack channel to include the json channel:
'stack' => [
    'driver' => 'stack',
    'channels' => ['single', 'json'],

This will ensure that logs are written to both the default single channel (which logs in plain text) and the new json channel.

  1. Use the Log facade to log data in JSON format:
Log::channel('json')->debug(json_encode(['key' => 'value']));

This will log a JSON object in the json channel.

With these steps, Laravel will now log data in JSON format in addition to the default plain text format.

Got an article suggestion? Let us know
Explore more
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

We are hiring.

Software is our way of making the world a tiny bit better. We build tools for the makers of tomorrow.

Explore all positions →