Laravel如何删除旧的日志文件

问题描述 投票:0回答:3

我正在使用Laravel 5.4。在我的config/app.php文件中,日志存储选项设置为daily。因此框架将创建一个日常日志文件,如'laravel-2019-03-11.log'。此外,旧的日志文件将根据默认值或log_max_files文件中的config/app.php值自动删除。

我的问题是编写unlink代码的地方(我试图在供应商文件夹中找到它但没有运气)?另外,有什么方法可以覆盖这个默认逻辑。我想要的是,而不是删除这些旧的日志文件,将其移动到另一个文件夹,如log_backup或其他东西。

php laravel laravel-5 laravel-5.4
3个回答
1
投票

旧文件被Monolog\Handler\RotatingFileHandler::rotate删除。

我知道您使用的是5.4,但如果升级到5.6(或更高版本)是一个选项,那么您可以利用新的日志记录功能。您所要做的就是将新的backup日志记录通道添加到config/logging.php并将其包含在stack中。这将是迄今为止最干净的解决方案。

例如,要保留所有critical或更高日志的备份:

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily', 'backup'],
        'ignore_exceptions' => false,
    ],
    'backup' => [
        'driver' => 'single',
        'path' => storage_path('logs/backup.log'),
        'level' => 'critical',
    ],

0
投票

您可以简单地创建一个单独的命令来定期使用cron作业移动日志文件。

这是一个例子。

将文件移动到另一个文件夹

public function moveLogs(){

  File::move( app()->storagePath().'your file name', $your/new/path )

}

0
投票

在laravel 5.4中,您的日志文件已自动删除,因为您的日志目录中可能已经有5个日志文件,而laravel 5.4中的log_max_size具有默认值5,这就是为什么您的日志已被自动删除的原因。

© www.soinside.com 2019 - 2024. All rights reserved.