How do I log a message when registering a ServiceProvide in Laravel?
So, I have a Laravel service provider and I would like to create a DEBUG log entry when it is applied:
<?php
use Illuminate\Support\ServiceProvider;
class MyServiceProvider extends ServiceProvider
{
public function register() {
Log::debug('message'); //fails, Log facade alias isn't available yet
$this->app['log']->debug('message'); //fails too
}
}
How can I do that?
+3
source to share
1 answer
In laravel, service providers are defined in app/config/app.php
This will fail if the MyServiceProvider is present earlier than LogServiceProvider
because it LogServiceProvider
has not been registered yet. on the opposite side, if MyServiceProvider shows later, this is exactly the answer you want.
For more details ProviderRepository is responsible for registering application service providers.
<?php
return array(
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\Session\CommandsServiceProvider',
'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
'Illuminate\Routing\ControllerServiceProvider',
'Illuminate\Cookie\CookieServiceProvider',
'Illuminate\Database\DatabaseServiceProvider',
'Illuminate\Encryption\EncryptionServiceProvider',
'Illuminate\Filesystem\FilesystemServiceProvider',
'Illuminate\Hashing\HashServiceProvider',
'Illuminate\Html\HtmlServiceProvider',
'Illuminate\Log\LogServiceProvider', // Log facade is registered here.
'Illuminate\Mail\MailServiceProvider',
'Illuminate\Database\MigrationServiceProvider',
'Illuminate\Pagination\PaginationServiceProvider',
'Illuminate\Queue\QueueServiceProvider',
'Illuminate\Redis\RedisServiceProvider',
'Illuminate\Remote\RemoteServiceProvider',
'Illuminate\Auth\Reminders\ReminderServiceProvider',
'Illuminate\Database\SeedServiceProvider',
'Illuminate\Session\SessionServiceProvider',
'Illuminate\Translation\TranslationServiceProvider',
'Illuminate\Validation\ValidationServiceProvider',
'Illuminate\View\ViewServiceProvider',
'Illuminate\Workbench\WorkbenchServiceProvider',
'MyServiceProvider', // You have to put this after LogServiceProvider.
)
);
+1
source to share