Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
webbingbrasil/core-module / Providers / Log / BaselogServiceProvider.php
Size: Mime:
<?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);
}