Tài liệu

Tham chiếu Context - Ghi log và xử lý lỗi

Tham chiếu Context - Ghi log và xử lý lỗi Ghi log vào response API và ném lỗi HTTP với mã trạng thái phù hợp. Ghi log Gọi @LOGS(...) hoặc $ctx.$logs(...) để ghi các mốc xử lý của script. Output được lưu vào enfyra_user_log và có thể xem tại Settings Server Logs User logs . Dùng c

Tham chiếu Context - Ghi log và xử lý lỗi

Ghi log vào response API và ném lỗi HTTP với mã trạng thái phù hợp.

Ghi log

Gọi @LOGS(...) hoặc $ctx.$logs(...) để ghi các mốc xử lý của script. Output được lưu vào enfyra_user_log và có thể xem tại Settings Server Logs User logs. Dùng correlation ID của request để tìm các lỗi hệ thống liên quan. Xem Trace lỗi và log của script để biết thao tác trên giao diện, quyền truy cập, thời gian lưu và giới hạn.

Ghi log cơ bản

$ctx.$logs('Operation started');
$ctx.$logs('User created successfully');
$ctx.$logs(`Processing order: ${orderId}`);

Ghi log biến

const userId = $ctx.$user.id;
const orderId = 123;

$ctx.$logs(`User ID: ${userId}`);
$ctx.$logs(`Order ID: ${orderId}`);
$ctx.$logs(`Processing data:`, dataObject);

Ghi log ở các giai đoạn khác nhau

// In preHook
$ctx.$logs('Validation started');

// In handler
$ctx.$logs('Creating user...');

// In postHook
$ctx.$logs('User created successfully');

Lưu ý: Log tự xuất hiện trong response API; bạn không cần tự thêm chúng vào giá trị trả về.

Xử lý lỗi

Ném lỗi HTTP với mã trạng thái phù hợp.

Ném lỗi theo mã trạng thái HTTP

// Bad Request
$ctx.$throw['400']('Invalid input data');

// Unauthorized
$ctx.$throw['401']('Authentication required');

// Forbidden
$ctx.$throw['403']('Insufficient permissions');

// Not Found
$ctx.$throw['404']('Resource not found');

// Conflict
$ctx.$throw['409']('Email already exists');

// Unprocessable Entity
$ctx.$throw['422']('Validation failed');

// Too Many Requests (Rate Limiting)
$ctx.$throw['429']('Rate limit exceeded. Try again later');

// Internal Server Error
$ctx.$throw['500']('Internal server error');

// Service Unavailable
$ctx.$throw['503']('Service temporarily unavailable');

Xử lý lỗi trong postHook

Trong postHook, bạn có thể kiểm tra lỗi xảy ra khi xử lý request:

// Check if error occurred
if ($ctx.$api.error) {
  // Error case
  $ctx.$logs(`Error occurred: ${$ctx.$api.error.message}`);
  $ctx.$logs(`Error status: ${$ctx.$api.error.statusCode}`);

  // $ctx.$data will be null when error occurs
  // $ctx.$statusCode will be the error status code
} else {
  // Success case
  $ctx.$logs('Operation completed successfully');
  // $ctx.$data contains the response data
  // $ctx.$statusCode contains success status (200, 201, etc.)
}

Lưu ý: $ctx.$api.error chỉ có trong postHook, không có trong preHook.

Tiếp theo