简体   繁体   English

在Lumen 5.2中配置日志旋转

[英]Configuring log rotate in Lumen 5.2

I tried to configure log rotation on Lumen but I'm stuck. 我试图在Lumen上配置日志轮换,但遇到问题。 I know how to do this with Laravel, but (one more time) I'm lost with Lumen. 我知道如何使用Laravel进行此操作,但是(又过一次)我迷失了Lumen。

I tried to add this in app/bootstrap.php , because I read it somewhere: 我尝试在app/bootstrap.php添加它,因为我在某处阅读了它:

$app->configureMonologUsing(function(Monolog\Logger $monolog) use ($app) {
    $monolog->pushHandler(
        new \Monolog\Handler\RotatingFileHandler($app->storagePath().'/logs/lumen.log', 5)
    );
});

And I can view this error: 我可以查看此错误:

Fatal error:  Uncaught Error: Call to a member function error() on null in /x/vendor/laravel/lumen-framework/src/Exceptions/Handler.php:36
Stack trace:
#0 /x/app/Exceptions/Handler.php(36): Laravel\Lumen\Exceptions\Handler->report(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#1 /x/vendor/laravel/lumen-framework/src/Concerns/RegistersExceptionHandlers.php(123): App\Exceptions\Handler->report(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#2 /x/vendor/laravel/lumen-framework/src/Concerns/RegistersExceptionHandlers.php(51): Laravel\Lumen\Application->handleUncaughtException(Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#3 [internal function]: Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(Object(Error))
#4 {main}
  thrown in /x/vendor/laravel/lumen-framework/src/Exceptions/Handler.php on line 36

I don't understand what does it mean, and what I should do. 我不明白这是什么意思,我该怎么做。

Does someone has succeeded in rotating log in lumen 5.2? 有人成功旋转了流明5.2的日志吗?

Another idea: 另一个想法:

<?php

namespace App\Providers;

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

class LogServiceProvider extends ServiceProvider
{
    /**
     * Configure logging on boot.
     *
     * @return void
     */
    public function boot()
    {
        $maxFiles = 7;

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

        $this->app['log']->setHandlers($handlers);
    }

    /**
     * Register the log service.
     *
     * @return void
     */
    public function register()
    {
        // Log binding already registered in vendor/laravel/lumen-framework/src/Application.php.
    }
}

Then don't forget to add the service provider to your Lumen bootstrap/app.php: 然后,别忘了将服务提供商添加到您的Lumen bootstrap / app.php中:

$app->register(\App\Providers\LogServiceProvider::class);

You forget returning the object, it should be: 忘记了返回对象,它应该是:

$app->configureMonologUsing(function(Monolog\Logger $monolog) use ($app) {
    return $monolog->pushHandler(
        new \Monolog\Handler\RotatingFileHandler($app->storagePath().'/logs/lumen.log', 5)
    );
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM