Ghi và xem nhật ký (thế hệ thứ 1)

Tính năng 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 lựa chọn sử dụng SDK ghi nhật ký, tính năng tuỳ chỉnh của Google Cloud Logging hoặc đối tượng console tiêu chuẩn để phát triển cho web.

Viết nhật ký

Mặc dù Cloud Functions SDK ghi nhật ký được đề xuất cho hầu hết các trường hợp, bạn có thể chọn một trong các lựa chọn khác vì những lý do sau:

  • Bạn có một cơ sở mã hiện có và không muốn tái cấu trúc từ console.log.
  • Bạn đã quen thuộc với Cloud Logging (trước đây là tính năng ghi nhật ký StackDriver) và muốn sử dụng tính năng này để ghi nhật ký tuỳ chỉnh.

Sử dụng SDK ghi nhật ký Cloud Functions

SDK ghi nhật ký Cloud Functions cung cấp một giao diện tiêu chuẩn có API tương tự như các 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ý các sự kiện bằng dữ liệu có cấu trúc, giúp phân tích và giám sát dễ dàng hơn.

SDK ghi nhật ký hỗ trợ các mục nhập nhật ký như một phần của quá trình nhập ký tự đại diện. Ví dụ:

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

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

Ngoài ra, bạn có thể sử dụng các lệnh xuất riêng lẻ. Ví dụ này minh hoạ dữ liệu có cấu trúc được đính kèm vào nhật ký dưới dạng đố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.
  • Các thông báo hệ thống nội bộ có cấp nhật ký DEBUG.

Với logger.write(), bạn có thể viết các mục nhập nhật ký bổ sung các cấp độ mức độ nghiêm trọng của nhật ký CRITICAL, ALERTEMERGENCY. Xem LogSeverity.

Nhật ký tuỳ chỉnhCloud Logging

Cloud Functions nhật ký có SDK ghi nhật ký được hỗ trợ bởi Cloud Logging. Bạn có thể sử dụng thư viện Cloud Logging cho Node.js để ghi nhật ký các sự kiện bằng dữ liệu có cấu trúc, giúp phân tích và giám sát 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 được đề xuất để ghi nhật ký từ một hàm là sử dụng SDK ghi nhật ký cho nền tảng của bạn. Với Node.js, bạn có thể sử dụng các lệnh gọi ghi nhật ký JavaScript tiêu chuẩn như console.logconsole.error. Tuy nhiên, trước tiên, bạn cần yêu cầu một mô-đun đặc biệt để vá các phương thức tiêu chuẩn nhằm 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 các phương thức console.log() như bình thường trong mã của mình:

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.
  • Các thông báo hệ thống nội bộ có cấp nhật ký DEBUG.

Xem nhật ký

Bạn có thể xem nhật ký cho Cloud Functions trong Google Cloud console, Cloud Logging UI hoặc thông qua công cụ dòng lệnh firebase.

Sử dụng Firebase CLI

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

firebase functions:log

Để xem nhật ký cho một hàm cụ thể, hãy cung cấp tên hàm dưới dạng đối số:

firebase functions:log --only <FUNCTION_NAME>

Để xem toàn bộ các lựa chọn xem nhật ký, hãy xem phần trợ giúp 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ý cho các hàm trong Google Cloud bảng điều khiển.

Sử dụng giao diện người dùng Cloud Logging

Bạn có thể xem nhật ký cho Cloud Functions trong giao diện người dùng Cloud Logging.

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ẽ 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 hàm, bạn có thể tạo biểu đồ và cảnh báo dựa trên các chỉ số này. Ví dụ: bạn có thể tạo biểu đồ để hình dung độ trễ theo thời gian hoặc tạo cảnh báo để cho biết liệu một lỗi nhất định có xảy ra quá thường xuyên hay không.

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