流明(5.1.6)每日登录

时间:2016-05-20 09:01:34

标签: laravel laravel-5 lumen

Documentantion说:

  

默认情况下,Lumen配置为为应用程序创建存储在日志/日志目录中的每日日志文件。

但我的应用程序仍然生成一个没有每日日志的lumen.log。

我的版本:Laravel Framework版本Lumen(5.1.6)(Laravel Components 5.1。*)我来自5.1安装。

如何使用每日文件生成日志?

1 个答案:

答案 0 :(得分:11)

this commit以来,有一个configureMonologUsing方法。您应该在bootstrap / app.php文件中调用此方法

use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;

$app->configureMonologUsing(function ($monolog) {
    $maxFiles = 7;

    $rotatingLogHandler = (new RotatingFileHandler(storage_path('logs/lumen.log'), $maxFiles))
        ->setFormatter(new LineFormatter(null, null, true, true));

    $monolog->setHandlers([$rotatingLogHandler]);

    return $monolog;
});

您可以创建一个服务提供程序,它创建一个新的旋转日志处理程序,然后替换Monolog处理程序。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;

class LogServiceProvider extends ServiceProvider
{
    public function boot()
    {
        app('Psr\Log\LoggerInterface')->setHandlers([$this->getRotatingLogHandler()]);
    }

    public function getRotatingLogHandler($maxFiles = 7)
    {
        return (new RotatingFileHandler(storage_path('logs/lumen.log'), $maxFiles))
            ->setFormatter(new LineFormatter(null, null, true, true));
    }

    public function register()
    {
    }
}

您还可以扩展应用并替换getMonologHandlerregisterLogBindings方法。以下是取代前者的示例。

替换bootstrap / start.php

// This
$app = new Laravel\Lumen\Application(
    realpath(__DIR__.'/../')
);

// With this
$app = new App\Application(
    realpath(__DIR__.'/../')
);

创建App \ Application.php

<?php

namespace App;

use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Laravel\Lumen\Application as LumenApplication;

class Application extends LumenApplication
{
    /**
     * {@inheritdoc}
     */
    protected function getMonologHandler()
    {
        $maxRotatedFiles = 3

        return (new RotatingFileHandler(storage_path('logs/lumen.log'), $maxRotatedFiles))
            ->setFormatter(new LineFormatter(null, null, true, true));
    }
}
相关问题