Laravel 5.4 - 如何更改Laravel日志文件名?

时间:2017-06-08 13:04:08

标签: laravel-5.4 php-7

Laravel版本:5.4.25 PHP版本:7.0

在之前版本的laravel中,有一个ConfigureLogging类来执行此操作。但是在最新版本的laravel中删除了类而不是新的LogServiceProvider:

protected function configureDailyHandler(Application $app, Writer $log)
{

    $log->useDailyFiles(
        $app->storagePath() . '/logs/customLogName.log',
        $app->make('config')->get('app.log_max_files', 5)
    );
}

我想覆盖此方法。

我该怎么做?

请帮忙。

感谢。

3 个答案:

答案 0 :(得分:4)

最后我得到了它。

在返回app/bootstrap/app.php实例后,在$app文件中添加此内容:

$app->configureMonologUsing(function($monolog) use ($app) {
    $monolog->pushHandler(
        (new Monolog\Handler\RotatingFileHandler(
        // Set the log path
            $app->storagePath().'/logs/customLogName.log',
            // Set the number of daily files you want to keep
            $app->make('config')->get('app.log_max_files', 5)
        ))->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true, true))
    );
});

return $app;

这就是诀窍

答案 1 :(得分:1)

对于Laravel 5.5

在路径vendor/laravel/framework/src/Illuminate/Log/LogServiceProvider.php

更改功能configureDailyHandler

$this->app->storagePath().'/logs/laravel.log', $this->maxFiles(),

对此

$this->app->storagePath().'/logs/laravel-'.get_current_user().'.log', $this->maxFiles(),

或者只需将其添加到bootstrap / app.php

$app->configureMonologUsing(function (Monolog\Logger $monolog) {
    $filename = storage_path('logs/' . php_sapi_name() . '-' . posix_getpwuid(posix_geteuid())['name'] . '.log');
    $monolog->pushHandler($handler = new Monolog\Handler\RotatingFileHandler($filename, 30));
    $handler->setFilenameFormat('laravel-{date}-{filename}', 'Y-m-d');
    $formatter = new \Monolog\Formatter\LineFormatter(null, null, true, true);
    $formatter->includeStacktraces();
    $handler->setFormatter($formatter);
});

答案 2 :(得分:1)

这可能已经改变了,但是目前(2020年使用Laravel 7)配置该配置的方法较少,这仅仅是因为config/logging.php中存在日志记录通道,例如。 daily驱动程序通过daily频道:

每天-一个基于RotatingFileHandler的{​​{1}}驱动程序,每天旋转。

还可以在其中更改默认的日志记录通道(如果需要):

Monolog

例如,一个人可以直接发布到频道。 'default' => env('LOG_CHANNEL', 'stack') 驱动程序转到一个自定义频道
(此频道会产生大量垃圾邮件,我希望将它们隔离在一个文件中):

daily

与此类似,与仅更改输出文件名相比,可以更好地组织日志记录。