context; $data = [ 'log_type' => $context['log_type'] ?? ActivityLogType::System, 'action' => $record->message, 'description_key' => $context['description_key'] ?? null, 'description_params' => $context['description_params'] ?? null, 'properties' => $context['properties'] ?? null, 'changes' => $context['changes'] ?? null, 'user_id' => $context['user_id'] ?? null, 'ip_address' => $context['ip_address'] ?? null, 'user_agent' => $this->truncateUserAgent($context['user_agent'] ?? null), ]; $loggable = $context['loggable'] ?? null; if ($loggable instanceof Model) { $data['loggable_type'] = $loggable->getMorphClass(); $data['loggable_id'] = $loggable->getKey(); } elseif (isset($context['loggable_type'], $context['loggable_id'])) { $data['loggable_type'] = $context['loggable_type']; $data['loggable_id'] = $context['loggable_id']; } ActivityLog::create($data); } /** * User-Agent 문자열을 최대 500자로 자릅니다. * * @param string|null $userAgent User-Agent 문자열 * @return string|null 잘린 User-Agent */ private function truncateUserAgent(?string $userAgent): ?string { if ($userAgent === null) { return null; } return mb_substr($userAgent, 0, 500); } }