Join 26,000+ Laravel Developers and join the free Laravel Newsletter
Log Fake for Laravel
News / October 09, 2018

Log Fake for Laravel

Log Fake is a drop-in fake logger for testing with the Laravel framework by Tim MacDonald (@timacdonald). The Log fake package gives you the ability to fake the logger in your application, including the ability to make assertions against channels and stacks introduced in Laravel 5.6.

Here’s a simple example of using the logger in a test:

<?php

use TiMacDonald\Log\LogFake;
use Illuminate\Support\Facades\Log;

//...

Log::swap(new LogFake);

Log::info('Donuts have arrived');

Log::assertLogged('info', function ($message, $context) {
    return str_contains($message, 'Donuts');
});

As mentioned, this fake supports channels and stacks, so if you are logging to a specific channel in your app, you need to prefix your assertions with a given channel:

<?php

Log::channel('slack')->alert('It is 5pm, go home');

Log::channel('slack')->assertLogged('alert'); // passes

// without the channel prefix...

Log::assertLogged('alert');  // fails

Like channels, you will need to do the same thing for stacks:

<?php

Log::swap(new LogFake);

Log::stack(['bugsnag', 'sentry'])->critical('Perform evasive maneuvers');

Log::stack(['bugsnag', 'sentry'])->assertLogged('critical');  // passes

// without the stack prefix...

Log::assertLogged('critical'); // fails

The GitHub repo has a full list of available assertions and usage instructions, along with the source code.

Nice work Tim!

Laravel News Partners

Newsletter

Join the weekly newsletter and never miss out on new tips, tutorials, and more.