diff --git a/composer.json b/composer.json index 711f06883..48ac981a1 100644 --- a/composer.json +++ b/composer.json @@ -156,7 +156,8 @@ "open-telemetry/transport-grpc": "^1.0.0", "open-telemetry/exporter-otlp": "^1.0.0", "nesbot/carbon": "^2.71", - "moneyphp/money": "^4.1.0" + "moneyphp/money": "^4.1.0", + "timacdonald/log-fake": "^2.0" }, "conflict": { "symfony/doctrine-messenger": ">7.0.5 < 7.1.0" diff --git a/packages/Laravel/composer.json b/packages/Laravel/composer.json index 1fa5a1954..ea7f247f7 100644 --- a/packages/Laravel/composer.json +++ b/packages/Laravel/composer.json @@ -50,7 +50,8 @@ "symfony/expression-language": "^6.0|^7.0", "nesbot/carbon": "^2.71", "moneyphp/money": "^4.1.0", - "ecotone/dbal": "~1.230.1" + "ecotone/dbal": "~1.230.1", + "timacdonald/log-fake": "^2.0" }, "extra": { "laravel": { @@ -96,4 +97,4 @@ "wikimedia/composer-merge-plugin": true } } -} \ No newline at end of file +} diff --git a/packages/Laravel/config/logging.php b/packages/Laravel/config/logging.php new file mode 100755 index 000000000..fefe0885c --- /dev/null +++ b/packages/Laravel/config/logging.php @@ -0,0 +1,119 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/packages/Laravel/src/CombinedLogger.php b/packages/Laravel/src/CombinedLogger.php deleted file mode 100644 index 760a58a42..000000000 --- a/packages/Laravel/src/CombinedLogger.php +++ /dev/null @@ -1,28 +0,0 @@ -applicationLogger = $applicationLogger; - $this->consoleLogger = $consoleLogger; - } - - public function log($level, $message, array $context = []): void - { - $this->applicationLogger->log($level, $message, $context); - $this->consoleLogger->log($level, $message, $context); - } -} diff --git a/packages/Laravel/src/EcotoneProvider.php b/packages/Laravel/src/EcotoneProvider.php index 6655eb3a7..c3a277bde 100644 --- a/packages/Laravel/src/EcotoneProvider.php +++ b/packages/Laravel/src/EcotoneProvider.php @@ -200,11 +200,7 @@ public function boot() $this->app->singleton( LoggingHandlerBuilder::LOGGER_REFERENCE, function (Application $app) { - if ($app->runningInConsole()) { - return new CombinedLogger($app->get('log'), new EchoLogger()); - } - - return $app->get('log'); + return new LaravelLogger(); } ); } diff --git a/packages/Laravel/src/LaravelLogger.php b/packages/Laravel/src/LaravelLogger.php new file mode 100644 index 000000000..404977848 --- /dev/null +++ b/packages/Laravel/src/LaravelLogger.php @@ -0,0 +1,18 @@ +getGatewayByName(MessagingTestSupport::class) ); } + + public function test_logs_are_collected() + { + $app = $this->createApplication(); + /** @var CommandBus $commandBus */ + $commandBus = $app->get(CommandBus::class); + /** @var QueryBus $queryBus */ + $queryBus = $app->get(QueryBus::class); + + $amount = 123; + $commandBus->sendWithRouting('setAmount', ['amount' => $amount]); + + $logFake = LogFake::bind(); + + $this->assertEquals( + $amount, + $queryBus->sendWithRouting('getAmount') + ); + + $logs = $logFake->allLogs(); + $this->assertStringContainsString( + 'Sending Query Message', + $logs[0]->message + ); + $this->assertStringContainsString( + 'Executing Query Handler', + $logs[1]->message + ); + } } diff --git a/packages/Laravel/tests/CombinedLoggerTest.php b/packages/Laravel/tests/CombinedLoggerTest.php deleted file mode 100644 index 302c4d549..000000000 --- a/packages/Laravel/tests/CombinedLoggerTest.php +++ /dev/null @@ -1,37 +0,0 @@ -getMockBuilder(LoggerInterface::class)->getMock(); - $consoleLogger = $this->getMockBuilder(LoggerInterface::class)->getMock(); - - $applicationLogger - ->expects($this->once()) - ->method('log') - ->with(1, 'Test log', []); - - $consoleLogger - ->expects($this->once()) - ->method('log') - ->with(1, 'Test log', []); - - $combinedLogger = new CombinedLogger($applicationLogger, $consoleLogger); - - $combinedLogger->log(1, 'Test log', []); - } -}