Viết 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ã. Chức năng đám mây cung cấp cho bạn tùy chọn sử dụng SDK trình ghi nhật ký, tính năng Ghi nhật ký đám mây của Google tùy chỉnh hoặc tiêu chuẩn đối tượng console để phát triển cho web.

Viết nhật ký

Mặc dù SDK trình ghi chức năng đám mây được khuyến nghị cho hầu hết các trường hợp, bạn có thể chọn một trong các tùy 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 cấu trúc lại từ console.log .
  • Bạn đã quen với tính năng Ghi nhật ký đám mây (trước đây là ghi nhật ký StackDriver) và thích sử dụng nó để ghi nhật ký tùy chỉnh.

Sử dụng SDK trình ghi chức năng đám mây

SDK trình ghi chức năng đám mây cung cấp giao diện tiêu chuẩn có api tương tự như 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 lại các sự kiện với 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ý như một phần của quá trình nhập ký tự đại diện. 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 các bản xuất riêng lẻ. Ví dụ này minh họa 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/lib/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'
});
  • logger.log() có cấp độ nhật ký INFO .
  • logger.info() có cấp độ nhật ký INFO .
  • logger.warn() có mức nhật ký LỖI .
  • logger.error() có mức nhật ký LỖI .
  • Thông báo hệ thống nội bộ có cấp độ nhật ký GỠ LỖI .

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

Nhật ký ghi nhật ký đám mây tùy chỉnh

Nhật ký Chức năng đám mây với SDK trình ghi nhật ký được hỗ trợ bởi tính năng Ghi nhật ký đám mây . Bạn có thể sử dụng thư viện Cloud Logging cho Node.js để ghi lại các sự kiện với 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.

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 chức năng là sử dụng SDK trình ghi nhật ký. Thay vào đó, 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 , nhưng 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 chuẩn hoạt động chính xác:

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

Khi bạn đã yêu cầu mô-đun tương thích của 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ó mức nhật ký INFO .
  • Các lệnh console.info() có cấp nhật ký INFO .
  • Các lệnh console.warn() có mức nhật ký LỖI .
  • Các lệnh console.error() có mức nhật ký LỖI .
  • Thông báo hệ thống nội bộ có cấp độ nhật ký GỠ LỖI .

Xem nhật ký

Nhật ký cho Chức năng đám mây có thể xem được trong Google Cloud Console , Giao diện người dùng ghi nhật ký đám mây 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 các 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 làm đối số:

firebase functions:log --only <FUNCTION_NAME>

Để có đầy đủ các tùy chọn xem nhật ký, hãy xem trợ giúp về các functions:log :

firebase help functions:log

Sử dụng Google Cloud Console

Bạn có thể xem nhật ký cho các chức năng trong Google Cloud Console .

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ý cho Chức năng đám mây trong Giao diện người dùng ghi nhật ký đám mây.

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 để theo dõi các Chức năng đám mây của mình. Những công cụ này đặc biệt mạnh mẽ khi được kết hợp với ghi nhật ký tùy chỉnh .

Các chỉ số dựa trên nhật ký

Trong giao diện người dùng ghi nhật ký đám mây, sử dụng trường bộ lọc nâng cao để thu hẹp phạm vi nhật ký cho chức năng bạn muốn phân tích, sau đó nhấp vào Gửi bộ lọc để lọc nhật ký. Ví dụ: bạn chỉ có thể phân tích nhật ký từ một hàm duy nhất:

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

Nếu bạn ghi nhật ký các sự kiện bằng tải trọng JSON tùy chỉnh, bạn có thể lọc bằng cách sử dụng các khóa và giá trị bạn đã cung cấp:

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

Khi bạn đã lọc nhật ký, bạn có thể phân tích chúng bằng cách sử dụng các chỉ số dựa trên nhật ký . Nhấp vào nút Tạo chỉ số để mở trình chỉnh sửa chỉ số và chọn loại chỉ số:

  • Số liệu bộ đếm: đếm số lượng mục nhật ký phù hợp với một bộ lọc. Ví dụ, bạn có thể đếm số lần một sự kiện nhất định xảy ra.
  • Chỉ số phân phối: tích lũy dữ liệu số từ các mục nhật ký phù hợp với bộ lọc. Ví dụ, bạn có thể theo dõi độ trễ của các hoạt động nhất định trong các chức năng của mình.

Đối với nhật ký dựa trên văn bản, chẳng hạn như nhật ký xuất phát từ console.log() trong các hàm của bạn, bạn có thể trích xuất các giá trị và nhãn từ trường textPayload bằng cách sử dụng biểu thức chính quy. Đối với nhật ký tùy chỉnh có dữ liệu có cấu trúc, bạn có thể truy cập trực tiếp vào dữ liệu trong trường jsonPayload .

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

Khi bạn đã tạo các chỉ số dựa trên nhật ký để theo dõi 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 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 bạn biết nếu một lỗi nào đó 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 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.