154 lines
3.7 KiB
PHP
154 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace Dipper\Foundation;
|
|
|
|
use Illuminate\Log\Writer;
|
|
use Monolog\Logger as Monolog;
|
|
use Monolog\Handler\StreamHandler;
|
|
use Monolog\Formatter\LineFormatter;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Monolog\Handler\RotatingFileHandler;
|
|
|
|
class LogServiceProvider extends ServiceProvider
|
|
{
|
|
public function register()
|
|
{
|
|
$this->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();
|
|
});
|
|
}
|
|
}
|