Laravel 日志管理:按日期切割日志
在Laravel中,日志文件通常按天切割,这是通过日志通道的rotation配置实现的。如果你想要自定义日志切割的频率,例如按周或者按月,你可以创建一个命令来定期执行切割操作。
以下是一个简单的命令示例,用于按日期切割日志文件:
- 创建一个新的Artisan命令:
php artisan make:command LogRotate
- 编辑生成的命令类,在
handle
方法中添加切割日志的逻辑:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Log\Filesystem;
class LogRotate extends Command
{
protected $filesystem;
protected $signature = 'log:rotate';
protected $description = 'Rotate the log files';
public function __construct(Filesystem $filesystem)
{
parent::__construct();
$this->filesystem = $filesystem;
}
public function handle()
{
$logPath = storage_path('logs');
$this->filesystem->rotate($logPath.'/laravel.log');
$this->info('Logs rotated successfully.');
}
}
- 在
app/Console/Kernel.php
的schedule
方法中设置命令的调度频率:
protected function schedule(Schedule $schedule)
{
// 每天凌晨执行日志切割
$schedule->command('log:rotate')->daily();
}
这样,Laravel 会每天自动执行日志切割。你也可以根据需要调整schedule
方法中的调度频率。
评论已关闭