spatie / laravel-log-dumper by spatie

A function to dump anything to the log
274,698
114
7
Package Data
Maintainer Username: spatie
Maintainer Contact: freek@spatie.be (Freek Van der Herten)
Package Create Date: 2020-04-02
Package Last Update: 2024-04-02
Home Page: https://spatie.be/open-source
Language: PHP
License: MIT
Last Refreshed: 2024-04-18 15:21:02
Package Statistics
Total Downloads: 274,698
Monthly Downloads: 6,914
Daily Downloads: 328
Total Stars: 114
Total Watchers: 7
Total Forks: 10
Total Open Issues: 0

A function to dump anything to the log

Latest Version on Packagist GitHub Tests Action Status Total Downloads

This package contains a function ld. Any argument you pass to it will be dumped to the log. You can pass any kind of value to it.

ld('a string', ['an array'], new Class());

Under the hood, Symfony's VarDumper is used to create string representations.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/laravel-log-dumper

Usage

You can pass any variable you want to ld.

ld('a string', ['an array'], new Class());

All arguments will be converted to strings and will be written to the application log using the info level.

Using other log levels

If you want to use another log level, you can just call the method you want on ld. You can pass these methods any type of argument and any number of arguments. They will all be logged.

// logs using the `error` level
ld()->error('a string', ['an array'], new Class())

Of course, you can mix and chain different levels.

ld()
   ->debug('Debug info', ['an array'])
   ->error('Error info', new Class);

Enabling and disabling logging

You can disable logging by calling disable.

ld('foo'); // will be logged

ld()->disable();

ld('bar'); // will not be logged

ld()->enable();

ld('baz'); // will be logged

You can pass a boolean to enable. This can be handy when you want to log only one iteration of a loop.

foreach (range(1, 3) as $i) {
   // only things in the third iteration will be logged
   ld()->enable($i === 3);

   ld('we are in the third iteration');
}

Logging queries

You can log all queries with logQueries.

ld()->logQueries(); // all queries after this call will be logged

If you wish to stop logging queries, call stopLoggingQueries.

ld()->stopLoggingQueries(); // all queries after this call will not be logged anymore

Alternatively to manually starting and stopping listening for queries, you can also pass a closure to logQueries. Only the queries executed inside the closure will be logged.

ld()->logQueries(function() {
    $this->mailAllUsers(); // all queries executed in this closure will be logged
});

User::get(); // this query will not be logged

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.