option('wait'); $this->info("开始测试时间切割功能..."); $this->info("将等待 {$waitTime} 秒来测试60秒自动切割功能"); // 获取测试日志实例 $testLogger = Log::channel('size_rotating_daily'); // 写入第一条日志 $testLogger->info("第一条测试日志 - " . date('Y-m-d H:i:s')); $this->info("已写入第一条日志"); // 显示当前日志文件状态 $this->showLogFileStatus(); // 等待指定时间 $this->info("等待 {$waitTime} 秒..."); $progressBar = $this->output->createProgressBar($waitTime); $progressBar->start(); for ($i = 0; $i < $waitTime; $i++) { sleep(1); $progressBar->advance(); } $progressBar->finish(); $this->newLine(); // 写入第二条日志,这应该触发时间切割 $testLogger->info("第二条测试日志 - " . date('Y-m-d H:i:s') . " (应该触发时间切割)"); $this->info("已写入第二条日志"); // 再次显示日志文件状态 $this->showLogFileStatus(); $this->info("测试完成!"); return 0; } /** * 显示日志文件状态 * * @return void */ private function showLogFileStatus(): void { $logPath = storage_path('logs'); // 检查主日志文件 $mainLogFile = $logPath . '/laravel.log'; $files = []; if (file_exists($mainLogFile)) { $files[] = $mainLogFile; } // 检查备份日志文件 $backupPattern = $logPath . '/size_rotating_daily/laravel-' . date('Y-m-d') . '*.log'; $backupFiles = glob($backupPattern); if ($backupFiles) { $files = array_merge($files, $backupFiles); } if (empty($files)) { $this->warn("没有找到日志文件"); return; } $this->newLine(); $this->info("当前日志文件状态:"); $tableData = []; foreach ($files as $file) { $filename = basename($file); $size = filesize($file); $sizeFormatted = $this->formatFileSize($size); $lastModified = date('Y-m-d H:i:s', filemtime($file)); $ageSeconds = time() - filemtime($file); $tableData[] = [$filename, $sizeFormatted, $lastModified, $ageSeconds . '秒前']; } // 按文件名排序 usort($tableData, function ($a, $b) { return strcmp($a[0], $b[0]); }); $this->table(['文件名', '大小', '最后修改时间', '文件年龄'], $tableData); } /** * 格式化文件大小 * * @param int $bytes * @return string */ private function formatFileSize(int $bytes): string { if ($bytes >= 1024 * 1024 * 1024) { return round($bytes / (1024 * 1024 * 1024), 2) . ' GB'; } elseif ($bytes >= 1024 * 1024) { return round($bytes / (1024 * 1024), 2) . ' MB'; } elseif ($bytes >= 1024) { return round($bytes / 1024, 2) . ' KB'; } else { return $bytes . ' B'; } } }