andybeak
7/8/2016 - 2:45 PM

Laravel 5.2 custom Monolog bootstrap

Laravel 5.2 custom Monolog bootstrap


$app->configureMonologUsing(function($monolog) use ($app) {

    // log more severe messages to loggly

    $config = $app->make('config');

    $logglyToken = $config->get('app.loggly_token');

    $tag = $config->get('app.base_domain');

    $monolog->pushHandler(new Monolog\Handler\LogglyHandler($logglyToken . '/tag/' . $tag, Monolog\Logger::ERROR));

    // set up default logging

    $formatter = new Monolog\Formatter\LineFormatter( "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\r\n", null, false, true);

    if ($config->get('app.debug')) {

        // we're in debug mode, so log everything
        $handler = new Monolog\Handler\RotatingFileHandler(storage_path() . DIRECTORY_SEPARATOR . 'logs/laravel.log', 7, Monolog\Logger::DEBUG);

        $handler->setFormatter($formatter);

        $monolog->pushHandler($handler);

    }  else {

        // we're not in debug mode, so use fingers crossed logging (https://github.com/Seldaek/monolog/blob/master/src/Monolog/Handler/FingersCrossedHandler.php)

        $handler = new Monolog\Handler\RotatingFileHandler(storage_path() . DIRECTORY_SEPARATOR . 'logs/laravel.log', Monolog\Logger::DEBUG);

        $handler->setFormatter($formatter);

        $fingersCrossedHandler = new Monolog\Handler\FingersCrossedHandler($handler, null, 0 , false);

        $monolog->pushHandler($fingersCrossedHandler);

    }

});