我正在使用Laravel 5.4
。在我的config/app.php
文件中,日志存储选项设置为daily
。因此框架将创建一个日常日志文件,如'laravel-2019-03-11.log'。此外,旧的日志文件将根据默认值或log_max_files
文件中的config/app.php
值自动删除。
我的问题是编写unlink代码的地方(我试图在供应商文件夹中找到它但没有运气)?另外,有什么方法可以覆盖这个默认逻辑。我想要的是,而不是删除这些旧的日志文件,将其移动到另一个文件夹,如log_backup
或其他东西。
旧文件被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',
],
您可以简单地创建一个单独的命令来定期使用cron作业移动日志文件。
这是一个例子。
将文件移动到另一个文件夹
public function moveLogs(){
File::move( app()->storagePath().'your file name', $your/new/path )
}
在laravel 5.4中,您的日志文件已自动删除,因为您的日志目录中可能已经有5个日志文件,而laravel 5.4中的log_max_size具有默认值5,这就是为什么您的日志已被自动删除的原因。