Skip to content

Commit 2f21999

Browse files
authored
Flush monolog state (#460)
1 parent 99eedab commit 2f21999

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

src/Concerns/ProvidesDefaultConfigurationOptions.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public static function prepareApplicationForNextOperation(): array
4949
\Laravel\Octane\Listeners\FlushDatabaseQueryLog::class,
5050
\Laravel\Octane\Listeners\FlushLogContext::class,
5151
\Laravel\Octane\Listeners\FlushArrayCache::class,
52+
\Laravel\Octane\Listeners\FlushMonologState::class,
5253
\Laravel\Octane\Listeners\FlushTranslatorCache::class,
5354

5455
// First-Party Packages...
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace Laravel\Octane\Listeners;
4+
5+
use Monolog\ResettableInterface;
6+
7+
class FlushMonologState
8+
{
9+
/**
10+
* Handle the event.
11+
*
12+
* @param mixed $event
13+
* @return void
14+
*/
15+
public function handle($event): void
16+
{
17+
if (! $event->sandbox->resolved('log')) {
18+
return;
19+
}
20+
21+
collect($event->sandbox->make('log')->getChannels())
22+
->map->getLogger()
23+
->filter(function ($logger) {
24+
return $logger instanceof ResettableInterface;
25+
})->each->reset();
26+
}
27+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace Laravel\Octane\Listeners;
4+
5+
use Illuminate\Http\Request;
6+
use Illuminate\Log\Logger;
7+
use Laravel\Octane\Tests\TestCase;
8+
use Mockery;
9+
use Monolog;
10+
11+
class FlushMonologStateTest extends TestCase
12+
{
13+
/** @doesNotPerformAssertions */
14+
public function test_logger_are_reset()
15+
{
16+
[$app, $worker, $client] = $this->createOctaneContext([
17+
Request::create('/', 'GET'),
18+
Request::create('/', 'GET'),
19+
]);
20+
21+
$app['router']->middleware('web')->get('/', function () {
22+
// ..
23+
});
24+
25+
$log = $app['log'];
26+
27+
$app['log'] = tap(Mockery::mock($log), function ($logger) {
28+
$logger->shouldReceive('getChannels')->twice()->andReturn([
29+
tap(Mockery::mock(Logger::class), function ($logger) {
30+
$logger->shouldReceive('getLogger')->twice()->andReturn(
31+
tap(Mockery::mock(Monolog\Logger::class), function ($logger) {
32+
$logger->shouldReceive('reset')->twice();
33+
}),
34+
);
35+
}),
36+
]);
37+
});
38+
39+
$worker->run();
40+
}
41+
}

0 commit comments

Comments
 (0)