Laravel如何删除旧的日志文件

时间:2019-03-11 13:43:06

标签: php laravel laravel-5 laravel-5.4

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

我的问题是将取消链接代码写在哪里(我试图在供应商文件夹中找到它,但没有运气)?另外,有什么方法可以覆盖此默认逻辑。我想要的是,而不是删除这些旧的日志文件,而是将其移动到log_backup之类的另一个文件夹中。

3 个答案:

答案 0 :(得分: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',
    ],

答案 1 :(得分:0)

您只需创建一个单独的命令即可使用cron作业定期移动日志文件。

这里是一个例子。

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

public function moveLogs(){

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

}

答案 2 :(得分:0)

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