Ghi nhật ký

Khi phát triển một loại ứng dụng bất kỳ, bạn thường nên ghi nhật ký thông tin để giúp chẩn đoán lỗi trong quá trình phát triển, xác định và chẩn đoán vấn đề của khách hàng và cho các mục đích khác.

Apps Script cung cấp 3 cơ chế để ghi nhật ký:

  • Nhật ký thực thi Apps Script tích hợp sẵn. Nhật ký này gọn nhẹ và phát trực tuyến theo thời gian thực, nhưng chỉ tồn tại trong một thời gian ngắn.

  • Giao diện Cloud Logging trong Developer Console, cung cấp các nhật ký tồn tại trong nhiều ngày sau khi tạo.

  • Giao diện Báo cáo lỗi trong Developer Console, thu thập và ghi lại các lỗi xảy ra khi tập lệnh của bạn đang chạy.

Các thao tác này được mô tả trong các phần sau. Ngoài các cơ chế này, bạn cũng có thể tạo mã trình ghi nhật ký của riêng mình để ghi thông tin vào Bảng tính hoặc cơ sở dữ liệu JDBC ghi nhật ký.

Sử dụng nhật ký thực thi Apps Script

Phương pháp cơ bản để đăng nhập vào Apps Script là sử dụng nhật ký thực thi tích hợp sẵn. Để xem các nhật ký này, ở đầu trình chỉnh sửa, hãy nhấp vào Execution log (Nhật ký thực thi). Khi bạn chạy một hàm hoặc sử dụng trình gỡ lỗi, nhật ký sẽ truyền trực tuyến theo thời gian thực.

Bạn có thể sử dụng dịch vụ ghi nhật ký Logger hoặc console trong nhật ký thực thi tích hợp.

Các nhật ký này dành cho các bước kiểm tra đơn giản trong quá trình phát triển và gỡ lỗi, đồng thời không tồn tại quá lâu.

Ví dụ: hãy xem xét hàm này:

utils/logging.gs
/**
 * Logs Google Sheet information.
 * @param {number} rowNumber The spreadsheet row number.
 * @param {string} email The email to send with the row data.
 */
function emailDataRow(rowNumber, email) {
  console.log('Emailing data row ' + rowNumber + ' to ' + email);
  try {
    const sheet = SpreadsheetApp.getActiveSheet();
    const data = sheet.getDataRange().getValues();
    const rowData = data[rowNumber - 1].join(' ');
    console.log('Row ' + rowNumber + ' data: ' + rowData);
    MailApp.sendEmail(email, 'Data in row ' + rowNumber, rowData);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}

Khi tập lệnh này chạy với dữ liệu đầu vào là "2" và "john@example.com", các nhật ký sau sẽ được ghi:

[16-09-12 13:50:42:193 PDT] Gửi hàng dữ liệu qua email 2 đến john@example.com
[16-09-12 13:50:42:271 PDT] Dữ liệu hàng 2: Chi phí 103,24

Cloud Logging

Apps Script cũng cung cấp quyền truy cập một phần vào dịch vụ Ghi nhật ký đám mây của Google Cloud Platform (GCP). Khi bạn yêu cầu ghi nhật ký liên tục trong vài ngày hoặc cần một giải pháp ghi nhật ký phức tạp hơn cho môi trường sản xuất nhiều người dùng, tính năng Ghi nhật ký trên đám mây là lựa chọn ưu tiên. Xem bài viết Hạn mức và giới hạn của tính năng Ghi nhật ký trên đám mây đối với việc giữ lại dữ liệu và các thông tin chi tiết khác về hạn mức.

Nếu cần thêm hạn mức ghi nhật ký, bạn có thể gửi yêu cầu hạn mức Google Cloud Platform. Để làm được điều này, bạn cần có quyền truy cập vào dự án Cloud Platform mà tập lệnh của bạn sử dụng.

Sử dụng tính năng ghi nhật ký trên đám mây

Nhật ký trên đám mây được đính kèm vào dự án Google Cloud liên kết với Apps Script của bạn. Bạn có thể xem phiên bản đơn giản của các nhật ký này trong trang tổng quan Apps Script.

Để khai thác tối đa tính năng Ghi nhật ký trên đám mây và các tính năng của tính năng này, hãy sử dụng dự án Google Cloud chuẩn với dự án tập lệnh của bạn. Nhờ đó, bạn có thể truy cập vào nhật ký trên đám mây ngay trong Bảng điều khiển GCP, đồng thời cung cấp thêm nhiều tuỳ chọn xem và lọc.

Khi ghi nhật ký, bạn nên tránh ghi lại bất kỳ thông tin cá nhân nào về người dùng, chẳng hạn như địa chỉ email. Nhật ký trên đám mây tự động được gắn nhãn bằng khoá người dùng đang hoạt động mà bạn có thể dùng để xác định vị trí thông điệp nhật ký của một người dùng cụ thể khi cần.

Bạn có thể ghi nhật ký chuỗi, chuỗi đã định dạng và thậm chí cả đối tượng JSON bằng các hàm do dịch vụ console của Apps Script cung cấp.

Ví dụ sau cho biết cách sử dụng dịch vụ console để ghi nhật ký thông tin trong Hoạt động trên đám mây.

utils/logging.gs
/**
 * Logs the time taken to execute 'myFunction'.
 */
function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info('Timing the %s function (%d arguments)', 'myFunction', 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "jsonPayload".
  const parameters = {
    isValid: true,
    content: 'some string',
    timestamp: new Date()
  };
  console.log({message: 'Function Input', initialData: parameters});
  const label = 'myFunction() time'; // Labels the timing log entry.
  console.time(label); // Starts the timer.
  try {
    myFunction(parameters); // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error('myFunction() yielded an error: ' + e);
  }
  console.timeEnd(label); // Stops the timer, logs execution duration.
}

Khoá người dùng đang hoạt động

Khoá người dùng đang hoạt động tạm thời mang đến một cách thuận tiện để phát hiện người dùng riêng biệt trong các mục nhập Nhật ký đám mây mà không tiết lộ danh tính của những người dùng đó. Các khoá cho mỗi tập lệnh và thay đổi khoảng một lần mỗi tháng để tăng cường bảo mật nếu người dùng tiết lộ danh tính của họ cho nhà phát triển, chẳng hạn như khi báo cáo sự cố.

Khoá người dùng đang hoạt động tạm thời vượt trội hơn so với giá trị nhận dạng ghi nhật ký như địa chỉ email vì:

  • Bạn không phải thêm bất kỳ nội dung gì vào nhật ký của mình; chúng đã có sẵn ở đó!
  • Các trang web này không yêu cầu người dùng cho phép.
  • Chúng bảo vệ quyền riêng tư của người dùng.

Để tìm khoá người dùng đang hoạt động tạm thời trong các mục nhập Nhật ký đám mây, hãy xem nhật ký đám mây của bạn trong bảng điều khiển Google Cloud. Bạn chỉ có thể thực hiện việc này nếu dự án tập lệnh của bạn đang sử dụng một dự án Google Cloud tiêu chuẩn mà bạn có quyền truy cập. Sau khi mở dự án trên Google Cloud trong bảng điều khiển, hãy chọn một mục nhật ký bạn quan tâm rồi mở rộng mục đó để xem siêu dữ liệu > nhãn > Script.googleapis.com/user_key.

Bạn cũng có thể lấy khoá người dùng đang hoạt động tạm thời bằng cách gọi Session.getTemporaryActiveUserKey() trong tập lệnh của mình. Một cách để sử dụng phương thức này là hiển thị khoá cho người dùng trong khi họ đang chạy tập lệnh của bạn. Sau đó, người dùng có thể chọn bao gồm khoá của họ khi báo cáo vấn đề để giúp bạn xác định các nhật ký liên quan.

Ghi nhật ký ngoại lệ

Tính năng ghi nhật ký ngoại lệ sẽ gửi các trường hợp ngoại lệ chưa được xử lý trong mã dự án tập lệnh của bạn đến Cloud Logging (Ghi nhật ký ngoại lệ) cùng với dấu vết ngăn xếp.

Để xem nhật ký ngoại lệ, hãy làm theo các bước dưới đây:

  1. Mở dự án Apps Script.
  2. Ở bên trái, hãy nhấp vào biểu tượng Thực thi .
  3. Ở trên cùng, hãy nhấp vào Thêm bộ lọc > Trạng thái.
  4. Đánh dấu vào các hộp Không thành côngĐã hết thời gian chờ.

Bạn cũng có thể xem các trường hợp ngoại lệ được ghi lại trong bảng điều khiển GCP nếu dự án tập lệnh của bạn đang sử dụng dự án tiêu chuẩn trên Google Cloud mà bạn có quyền truy cập.

Bật ghi nhật ký ngoại lệ

Theo mặc định, tính năng ghi nhật ký ngoại lệ được bật cho các dự án mới. Để bật tính năng ghi nhật ký ngoại lệ cho các dự án cũ, hãy làm theo các bước bên dưới:

  1. Mở dự án tập lệnh.
  2. Ở bên trái, hãy nhấp vào biểu tượng Cài đặt dự án .
  3. Chọn hộp đánh dấu Log uncaughtexception for Cloud Operations (Ghi nhật ký các trường hợp ngoại lệ chưa nắm bắt được vào Cloud Operations).

Error Reporting

Tính năng ghi nhật ký ngoại lệ tự động tích hợp với Cloud Error Reporting (Báo cáo lỗi đám mây), một dịch vụ tổng hợp và hiển thị các lỗi được tạo ra trong tập lệnh của bạn. Bạn có thể xem báo cáo lỗi trên Đám mây trong bảng điều khiển Google Cloud. Nếu bạn được nhắc "Set up Error Reporting" (Thiết lập báo cáo lỗi), thì điều này là do tập lệnh của bạn chưa ghi lại bất kỳ trường hợp ngoại lệ nào. Bạn không cần thiết lập ngoài việc bật tính năng ghi nhật ký ngoại lệ.

Yêu cầu về việc ghi nhật ký

Không cần phải đáp ứng yêu cầu đối với việc sử dụng nhật ký thực thi tích hợp.

Bạn có thể xem phiên bản đơn giản hoá của nhật ký trên đám mây trong Trang tổng quan Apps Script. Tuy nhiên, để khai thác tối đa tính năng Ghi nhật ký trên đám mây và báo cáo lỗi, bạn phải có quyền truy cập vào dự án GCP của tập lệnh. Bạn chỉ có thể làm việc này nếu dự án tập lệnh của bạn sử dụng một dự án tiêu chuẩn trên Google Cloud.