app->configureMonologUsing(function (Monolog $logger) { $log = new Writer($logger, $this->app['events']); $this->configureHandler($log); return $log; }); } /** * Configure the Monolog handlers for the application. * * @param \Illuminate\Log\Writer $log * @return void */ protected function configureHandler(Writer $log) { $this->app->configure('app'); $this->{'configure'.ucfirst($this->handler()).'Handler'}($log); } /** * Configure the Monolog handlers for the application. * * @param \Illuminate\Log\Writer $log * @return void */ protected function configureSingleHandler(Writer $log) { $monolog = $log->getMonolog(); $monolog->pushHandler($handler = new StreamHandler( $this->app->storagePath('logs/lumen.log'), $this->logLevel(), $bubble = true, $filePermission = 0777 )); $handler->setFormatter($this->getDefaultFormatter()); } /** * Configure the Monolog handlers for the application. * * @param \Illuminate\Log\Writer $log * @return void */ protected function configureDailyHandler(Writer $log) { $monolog = $log->getMonolog(); $monolog->pushHandler( $handler = new RotatingFileHandler( $this->app->storagePath('logs/lumen.log'), $this->maxFiles(), $this->logLevel(), $bubble = true, $filePermission = 0777 ) ); $handler->setFormatter($this->getDefaultFormatter()); } /** * Configure the Monolog handlers for the application. * * @param \Illuminate\Log\Writer $log * @return void */ protected function configureSyslogHandler(Writer $log) { $log->useSyslog('lumen', $this->logLevel()); } /** * Configure the Monolog handlers for the application. * * @param \Illuminate\Log\Writer $log * @return void */ protected function configureErrorlogHandler(Writer $log) { $log->useErrorLog($this->logLevel()); } /** * Get the default log handler. * * @return string */ protected function handler() { if ($this->app->bound('config')) { return $this->app->make('config')->get('app.log'); } return 'single'; } /** * Get the log level for the application. * * @return string */ protected function logLevel() { if ($this->app->bound('config')) { return $this->app->make('config')->get('app.log_level', 'debug'); } return 'debug'; } /** * Get the maximum number of log files for the application. * * @return int */ protected function maxFiles() { if ($this->app->bound('config')) { return $this->app->make('config')->get('app.log_max_files', 5); } return 0; } /** * Get a default Monolog formatter instance. * * @return \Monolog\Formatter\LineFormatter */ protected function getDefaultFormatter() { return tap(new LineFormatter(null, null, true, true), function ($formatter) { $formatter->includeStacktraces(); }); } }