Log Fake for Laravel

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!


Filed in: News / logging


Newsletter

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

Laravel News Partners

Laravel Jobs

PHP Web Developer
Orlando, FL
Christ for all Nations
PHP Developer
Manhattan, KS (open to Remote)
CivicPlus
Mid-Senior Laravel Developer
Exeter
Optix Solutions
Full Stack Web Developer
Las Vegas, NV
V Shred
Staff Software Engineer (Laravel)
Remote
smartbnb
Software Engineer (PHP, Laravel, Vue)
Los Angeles, CA
Relocity
Software Engineer Level 1 / Level 2
St. Pete. / Tampa Area, FL / Remote
ShineOn