Ghi và xem nhật ký


Ghi nhật ký là một công cụ quan trọng để gỡ lỗi và giám sát mã. Cloud Functions cung cấp cho bạn tuỳ chọn sử dụng SDK trình ghi nhật ký, các dịch vụ Cloud Logging (Ghi nhật ký trên đám mây) hoặc là tiêu chuẩn đối tượng console để phát triển cho web.

Ghi nhật ký

Trong khi trình ghi nhật ký Cloud Functions Bạn nên dùng SDK cho hầu hết các trường hợp bạn có thể chọn một trong các lý do khác vì những lý do sau:

  • Bạn đã có cơ sở mã và không muốn cải tiến từ console.log.
  • Bạn đã quen với tính năng Ghi nhật ký trên đám mây (trước đây là ghi nhật ký StackDriver) và ưu tiên dùng để ghi nhật ký tuỳ chỉnh.

Sử dụng SDK trình ghi nhật ký Chức năng đám mây

SDK trình ghi nhật ký Chức năng đám mây cung cấp giao diện chuẩn có api tương tự với câu lệnh console.log và hỗ trợ các cấp độ nhật ký khác. Bạn có thể sử dụng SDK này để ghi nhật ký sự kiện bằng dữ liệu có cấu trúc, cho phép phân tích và giám sát dễ dàng hơn.

SDK trình ghi nhật ký hỗ trợ các mục nhập nhật ký trong quá trình nhập ký tự đại diện. Cho ví dụ:

  const functions = require("firebase-functions");

  functions.logger.log("Hello from info. Here's an object:", someObj);

Ngoài ra, bạn có thể sử dụng từng tệp xuất. Ví dụ này minh hoạ dữ liệu có cấu trúc được đính kèm vào nhật ký làm đối số cuối cùng:

const { warn } = require("firebase-functions/logger");


// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
  key1: 'val1',
  key2: 'val2'
});
  • Các lệnh logger.log() có cấp độ nhật ký INFO.
  • Các lệnh logger.info() có cấp độ nhật ký INFO.
  • Các lệnh logger.warn() có cấp độ nhật ký WARNING.
  • Các lệnh logger.error() có cấp độ nhật ký ERROR.
  • Thông báo nội bộ trong hệ thống có cấp độ nhật ký là GỠ LỖI.

Với logger.write(), bạn có thể ghi các mức độ nghiêm trọng của nhật ký bổ sung vào mục nhập nhật ký về CRITICAL, ALERTEMERGENCY. Hãy xem LogSeverity (Mức độ nghiêm trọng).

Nhật ký ghi nhật ký trên đám mây tuỳ chỉnh

Ghi nhật ký của Cloud Functions với SDK trình ghi nhật ký được hỗ trợ bởi Cloud Logging. Bạn có thể dùng thư viện Cloud Logging cho Node.js để ghi lại sự kiện bằng dữ liệu có cấu trúc, từ đó giúp bạn phân tích và theo dõi dễ dàng hơn.

const { Logging } = require('@google-cloud/logging');

// ...

// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};

// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

Sử dụng console.log

Giải pháp đề xuất để ghi nhật ký từ một hàm là sử dụng SDK trình ghi nhật ký cho nền tảng của bạn. Với Node.js, bạn có thể dùng tính năng ghi nhật ký JavaScript tiêu chuẩn chẳng hạn như console.logconsole.error, nhưng trước tiên, bạn cần yêu cầu mô-đun đặc biệt để vá các phương thức chuẩn để hoạt động chính xác:

require("firebase-functions/logger/compat");

Sau khi yêu cầu mô-đun tương thích với trình ghi nhật ký, bạn có thể sử dụng console.log() phương thức như bình thường trong mã của bạn:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • Các lệnh console.log() có cấp độ nhật ký INFO.
  • Các lệnh console.info() có cấp độ nhật ký INFO.
  • Các lệnh console.warn() có cấp độ nhật ký ERROR.
  • Các lệnh console.error() có cấp độ nhật ký ERROR.
  • Thông báo nội bộ trong hệ thống có cấp độ nhật ký là GỠ LỖI.

Xem nhật ký

Bạn có thể xem nhật ký của các Hàm đám mây trong bảng điều khiển Google Cloud, Giao diện người dùng của tính năng Ghi nhật ký trên đám mây hoặc thông qua công cụ dòng lệnh firebase.

Sử dụng Giao diện dòng lệnh (CLI) của Firebase

Để xem nhật ký bằng công cụ firebase, hãy dùng lệnh functions:log:

firebase functions:log

Để xem nhật ký của một hàm cụ thể, hãy cung cấp tên hàm làm đối số:

firebase functions:log --only <FUNCTION_NAME>

Để biết đầy đủ các tuỳ chọn xem nhật ký, hãy xem trợ giúp dành cho functions:log:

firebase help functions:log

Sử dụng bảng điều khiển Google Cloud

Bạn có thể xem nhật ký của các chức năng trong bảng điều khiển Google Cloud.

Sử dụng giao diện người dùng ghi nhật ký đám mây

Bạn có thể xem nhật ký của Cloud Functions trong giao diện người dùng Ghi nhật ký đám mây.

Đang phân tích nhật ký

Cloud Logging cung cấp một bộ công cụ phân tích nhật ký mạnh mẽ để bạn có thể sử dụng để giám sát Cloud Functions.

Biểu đồ và cảnh báo

Sau khi tạo các chỉ số dựa trên nhật ký để giám sát các chức năng của mình, bạn có thể tạo biểu đồ và cảnh báo dựa trên những chỉ số này. Ví dụ: bạn có thể tạo biểu đồ trực quan hoá độ trễ theo thời gian hoặc tạo cảnh báo để cho bạn biết nếu một lỗi nhất định xảy ra quá thường xuyên.

Xem Tạo biểu đồ và cảnh báo để biết thông tin chi tiết về cách thực hiện sử dụng các chỉ số dựa trên nhật ký trong các biểu đồ và chính sách cảnh báo.