feat: API 요청/응답 로깅 시스템 추가
- api_request_logs 테이블 생성 (하루치만 보관) - LogApiRequest 미들웨어로 DB + 로그 파일 이중 저장 - 날짜별 로그 파일: storage/logs/api/api-YYYY-MM-DD.log - 민감 데이터 자동 마스킹 (password, token 등) - api-log:prune 스케줄러로 매일 03:00 자동 정리
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Models\ApiRequestLog;
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Schedule;
|
||||
@@ -8,7 +9,25 @@
|
||||
$this->comment(Inspiring::quote());
|
||||
})->purpose('Display an inspiring quote');
|
||||
|
||||
// API 요청 로그 정리 커맨드
|
||||
Artisan::command('api-log:prune', function () {
|
||||
$deleted = ApiRequestLog::pruneOldLogs();
|
||||
$this->info("✅ {$deleted}개의 API 요청 로그가 삭제되었습니다.");
|
||||
})->purpose('하루 지난 API 요청 로그 삭제');
|
||||
|
||||
// 스케줄러 정의 (Laravel 12 표준 방식)
|
||||
|
||||
// 매일 새벽 03:00에 API 요청 로그 정리 (하루치만 보관)
|
||||
Schedule::command('api-log:prune')
|
||||
->dailyAt('03:00')
|
||||
->appendOutputTo(storage_path('logs/scheduler.log'))
|
||||
->onSuccess(function () {
|
||||
\Illuminate\Support\Facades\Log::info('✅ api-log:prune 스케줄러 실행 성공', ['time' => now()]);
|
||||
})
|
||||
->onFailure(function () {
|
||||
\Illuminate\Support\Facades\Log::error('❌ api-log:prune 스케줄러 실행 실패', ['time' => now()]);
|
||||
});
|
||||
|
||||
// 매일 새벽 03:10에 감사 로그 정리 (환경값 기반 보관기간)
|
||||
Schedule::command('audit:prune')
|
||||
->dailyAt('03:10')
|
||||
|
||||
Reference in New Issue
Block a user