$userId, 'user_account' => $userAccount, 'user_name' => $userName, 'module' => $module, 'action' => $action, 'method' => $method, 'url' => $url, 'ip' => $ip, 'user_agent' => $userAgent, 'request_data' => !empty($filteredRequestData) ? json_encode($filteredRequestData, JSON_UNESCAPED_UNICODE) : null, 'response_data' => !empty($responseData) ? json_encode($responseData, JSON_UNESCAPED_UNICODE) : null, 'status' => $status, 'error_message' => $errorMessage, 'execution_time' => $executionTime, ]); return true; } catch (\Exception $e) { // 记录日志失败不应该影响主流程,只记录错误 error_log('操作日志记录失败: ' . $e->getMessage()); return false; } } /** * 过滤敏感数据 * @param array $data * @return array */ private static function filterSensitiveData(array $data): array { $sensitiveKeys = ['password', 'pwd', 'token', 'api_key', 'secret']; foreach ($data as $key => $value) { if (in_array(strtolower($key), $sensitiveKeys)) { $data[$key] = '***'; } elseif (is_array($value)) { $data[$key] = self::filterSensitiveData($value); } } return $data; } }