Repository URL to install this package:
|
Version:
1.0.0 ▾
|
<?php
namespace Modules\Core\Providers\Log;
use Illuminate\Support\ServiceProvider;
use Monolog\Logger as Monolog;
abstract class BaselogServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;
/**
* Indicates the log handler service
*
* @var bool
*/
protected $serviceHandler = '';
/**
* Bootstrap the application events.
*
* @return void
*/
public function boot()
{
$app = $this->app;
$config = $app['config']->get('services.' . $this->serviceHandler);
if (isset($config['key']) and !empty($config['key'])) {
$logger = \Log::getMonolog();
$logger->pushHandler($app[$this->serviceHandler . '.handler']);
}
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$app = $this->app;
$config = $app['config']->get('services.' . $this->serviceHandler);
if (isset($config['key']) and !empty($config['key'])) {
$this->app[$this->serviceHandler . '.handler'] = $this->app->share(function ($app) use ($config) {
$level = $this->parseLevel($app['config']->get('services.' . $this->serviceHandler . '.level', 'debug'));
return $this->serviceHandler($config, $level);
});
}
}
public function parseLevel($level)
{
$errorLevels = [
'debug' => Monolog::DEBUG,
'info' => Monolog::INFO,
'notice' => Monolog::NOTICE,
'warning' => Monolog::WARNING,
'error' => Monolog::ERROR,
'critical' => Monolog::CRITICAL,
'alert' => Monolog::ALERT,
'emergency' => Monolog::EMERGENCY,
'none' => 1000
];
if (!isset($errorLevels[$level])) {
throw new \InvalidArgumentException("Invalid log level.");
}
return $errorLevels[$level];
}
abstract protected function serviceHandler($config, $level);
}