Giải pháp ghi log frontend linh hoạt và mở rộng với awesome-logger
awesome-logger là một công cụ ghi log hiệu quả được thiết kế cho các nhà phát triển frontend, tập trung vào tính linh hoạt, khả năng mở rộng và trải nghiệm của nhà phát triển. Với các trường log chuẩn hóa tích hợp sẵn, kiến trúc dựa trên plugin và quản lý log đa chiều, nó giúp các nhà phát triển nhanh chóng thực hiện việc thu thập, báo cáo và phân tích log, từ đó cải thiện độ ổn định của ứng dụng và hiệu quả trong việc xử lý sự cố.
🎯 Trường hợp sử dụng
awesome-logger cung cấp các giải pháp chính xác cho nhiều nhu cầu phát triển, phù hợp với các tình huống sau:
-
Xác định nhanh chóng vấn đề của người dùng
- Lợi thế cốt lõi: Các trường tích hợp như
os,devicevàuatự động thu thập ngữ cảnh đầy đủ. - Tình huống điển hình: Khi người dùng báo cáo sự cố, log có thể được lọc theo thời gian thực (ví dụ: Alibaba Cloud SLS) để xác định thiết bị, đường đi hoạt động và các thông tin khác chỉ trong vài giây.
- Lợi thế cốt lõi: Các trường tích hợp như
-
Giám sát sức khỏe ứng dụng
- Lợi thế cốt lõi: Hỗ trợ các mức log như
info,warnvàerror, hỗ trợ xây dựng bảng điều khiển độ ổn định. - Tình huống điển hình: Giám sát tỷ lệ lỗi API, rò rỉ bộ nhớ, v.v. để nhanh chóng xác định các rủi ro tiềm ẩn của ứng dụng.
- Lợi thế cốt lõi: Hỗ trợ các mức log như
-
Báo cáo đồng nhất đến nhiều hệ thống log
- Lợi thế cốt lõi: Kiến trúc dựa trên plugin hỗ trợ tích hợp đồng thời với nhiều dịch vụ như Alibaba Cloud SLS và Tencent Cloud CLS.
- Tình huống điển hình: Các dự án triển khai đa đám mây hoặc chuyển đổi giữa các hệ thống ghi log cũ và mới, cho phép báo cáo một lần đến nhiều nền tảng.
-
Mở rộng log tùy chỉnh
- Lợi thế cốt lõi: Tùy chỉnh logic báo cáo thông qua giao diện
LogPlugin(ví dụ: hệ thống riêng, mã hóa dữ liệu). - Tình huống điển hình: Triển khai riêng cho doanh nghiệp hoặc xử lý dữ liệu nhạy cảm (tình huống tài chính/y tế).
- Lợi thế cốt lõi: Tùy chỉnh logic báo cáo thông qua giao diện
-
Phát triển hiệu quả và chuẩn hóa
- Lợi thế cốt lõi: Các plugin chính thống có sẵn cho SLS/CLS cho phép khởi tạo chỉ trong 10 dòng mã.
- Tình huống điển hình: Các startup hoặc nhóm phát triển linh hoạt giảm thiểu phát triển hạ tầng dư thừa.
Thông qua thiết kế nhẹ và mở rộng linh hoạt, awesome-logger giúp các nhà phát triển cân bằng giữa hiệu suất, độ ổn định và khả năng quan sát.
🌟 Lợi ích chính
-
Các trường log chuẩn hóa tích hợp sẵn cho việc xử lý sự cố hiệu quả
Các trường môi trường khóa được định nghĩa trước nhưos(hệ điều hành),device(mô hình thiết bị), vàua(user agent) cho phép thu thập ngữ cảnh toàn diện mà không cần phát triển thêm, giúp các nhà phát triển nhanh chóng xác định nguyên nhân gốc rễ của các vấn đề. -
Cấu hình linh hoạt các trường cơ bản, hỗ trợ truy vấn và phân tích theo thời gian thực
Người dùng có thể tùy chỉnh các trường cơ bản (ví dụ:uid,env), được tự động thêm vào mỗi log. Kết hợp với các dịch vụ như Alibaba Cloud SLS, điều này cho phép lọc và truy vấn log theo thời gian thực, xác định chính xác các tình huống phản hồi của người dùng. -
Quản lý log đa cấp cho việc giám sát sức khỏe ứng dụng
Hỗ trợ nhiều mức log nhưinfo,warn, vàerror, giúp các nhà phát triển xây dựng bảng điều khiển ổn định và theo dõi sức khỏe ứng dụng theo thời gian thực. Phân loại log theo mức độ cho phép xác định nhanh chóng các rủi ro và bất thường tiềm ẩn. -
Kiến trúc dựa trên plugin cho tích hợp liền mạch với bất kỳ dịch vụ ghi log nào
Với cơ chế plugin, các nhà phát triển có thể tự do mở rộng khả năng ghi log. Hỗ trợ tích hợp cho các dịch vụ ghi log lớn như Alibaba Cloud SLS và Tencent Cloud CLS được cung cấp, cùng với khả năng tạo các plugin tùy chỉnh cho các hệ thống ghi log riêng hoặc các dịch vụ bên thứ ba.
📦 Thiết kế kiến trúc
awesome-logger áp dụng một kiến trúc phân lớp để đảm bảo tính tách biệt chức năng và khả năng mở rộng:
-
Lớp lõi (
@awesome-logger/core)- Lớp Logger: Quản lý việc tạo log, kiểm soát mức độ và đăng ký plugin. Cung cấp các phương thức như
info,warn, vàerror, hỗ trợ cấu hình các trường cơ bản. - Lớp trừu tượng LogPlugin: Định nghĩa các thông số phát triển plugin. Tất cả các plugin phải triển khai phương thức
sendLogđể gửi dữ liệu log đến dịch vụ mục tiêu.
- Lớp Logger: Quản lý việc tạo log, kiểm soát mức độ và đăng ký plugin. Cung cấp các phương thức như
-
Lớp plugin (
@awesome-logger/plugin-*)
Cung cấp các triển khai cho các dịch vụ ghi log cụ thể. Ví dụ:@awesome-logger/plugin-sls: Tích hợp với dịch vụ ghi log Alibaba Cloud SLS. Các nhà phát triển có thể tùy chỉnh các plugin theo thông số kỹ thuật để mở rộng khả năng ghi log.
-
Lớp sử dụng (
@awesome-logger/client)- Lớp Client: Đóng gói các chức năng cốt lõi để đơn giản hóa việc tích hợp cho người dùng. Hỗ trợ đăng ký plugin thông qua
usePluginvà cung cấp một giao diện ghi log thống nhất.
- Lớp Client: Đóng gói các chức năng cốt lõi để đơn giản hóa việc tích hợp cho người dùng. Hỗ trợ đăng ký plugin thông qua
🚀 Bắt đầu nhanh
1. Cài đặt phụ thuộc
bash
npm install @awesome-logger/client @awesome-logger/core @awesome-logger/plugin-sls
2. Khởi tạo và cấu hình
javascript
import Client from '@awesome-logger/client';
import { Logger } from '@awesome-logger/core';
import { SLSLogPlugin } from '@awesome-logger/plugin-sls';
// tạo logger
const logger = new Logger({
uid: 'test_user_1',
release: '1.0.0',
env: 'production',
});
// bạn cũng có thể sử dụng hàm logger.setBaseField cho một số tình huống bất đồng bộ
logger.setBaseField({ uid: 'user_001' });
// Cấu hình các trường cơ bản
const client = new Client(logger);
// Đăng ký plugin Alibaba Cloud SLS
const slsPlugin = new SLSLogPlugin({
host: 'your-sls-endpoint', // Công khai tên miền
project: 'your-project',
logstore: 'your-logstore',
count: 20, // Ngưỡng số lượng gửi
time: 3, // Ngưỡng thời gian gửi
});
client.usePlugin(slsPlugin);
3. Báo cáo log
javascript
// Báo cáo log thông tin
client.info('enter_home_page', { page: 'home' });
// Báo cáo log cảnh báo
client.warn('api_timeout', { latency: 500 });
// Báo cáo log lỗi
client.error('api_fail', { errorCode: 500, endpoint: '/api/data' });
4. Ghi log đến Alibaba Cloud SLS
Chức năng hoạt động như hình dưới đây:
Lưu ý
- Trước khi sử dụng plugin-sls, bạn cần tạo một tài khoản Alibaba Cloud.
- Kích hoạt dịch vụ ghi log SLS, cung cấp dùng thử miễn phí trong một tháng với 50GB dung lượng lưu trữ.
- Tạo một dự án log.
- Sau đó tạo một logstore (đối với báo cáo frontend, nhớ bật tùy chọn theo dõi web).
- Sau khi báo cáo một số log, bạn có thể tạo một chỉ mục.
- Các chỉ mục hỗ trợ thiết lập, bổ sung và ghi đè.
🛠️ Phát triển plugin tùy chỉnh
awesome-logger hỗ trợ phát triển plugin tùy chỉnh, cho phép tích hợp liền mạch với các hệ thống ghi log riêng hoặc các dịch vụ khác:
- Tạo lớp Plugin
javascript
import { LogPlugin } from '@awesome-logger/core';
class CustomLogPlugin extends LogPlugin {
sendLog(logData: Record<string, any>) {
// Logic báo cáo log tùy chỉnh
console.log('Báo cáo dịch vụ log tùy chỉnh:', logData);
// Ví dụ: Gửi đến một hệ thống ghi log tự phát triển
fetch('https://your-log-service.com', {
method: 'POST',
body: JSON.stringify(logData)
});
}
}
export default CustomLogPlugin;
- Sử dụng plugin tùy chỉnh
javascript
import Client from '@awesome-logger/client';
import CustomLogPlugin from './CustomLogPlugin';
const client = new Client();
const customPlugin = new CustomLogPlugin({ /* Cấu hình tùy chỉnh */ });
client.usePlugin(customPlugin);
client.info('click', { message: 'click button' });
Các trường log tích hợp sẵn
| Trường | Loại | Mô tả |
|---|---|---|
| uid | string | ID người dùng |
| release | string | Phiên bản ứng dụng frontend |
| env | string | Môi trường: local, pre, prod |
| type | string | Loại, chẳng hạn như mức độ log: info, warn, error |
| key | string | Khóa log, dùng để xác định một bản ghi log |
| data | Record | string |
| ua | string | Thông tin userAgent của trình duyệt |
| url | string | Thông tin URL của trang hiện tại |
| os | string | Thông tin hệ điều hành của thiết bị hiện tại |
| osVersion | string | Phiên bản hệ điều hành của thiết bị hiện tại |
| traceId | string | UUID được thống nhất giữa frontend và backend để theo dõi sự cố |
| sessionId | string | ID phiên làm việc, dùng để phân biệt các log trong cùng một phiên |
| browser | string | Trình duyệt: Chrome, Safari, iOS Safari, v.v. |
| browserVersion | string | Thông tin phiên bản trình duyệt |
| container | string | Container nơi trang chạy, ví dụ: DingTalk, trình duyệt |
| device | string | Loại thiết bị, ví dụ: điện thoại, máy tính để bàn |
| clientTime | string | Thời gian khách hàng |
Với awesome-logger, bạn có thể dễ dàng đạt được việc ghi log frontend chuẩn hóa, có thể quan sát và linh hoạt, khiến cho các log trở thành một công cụ mạnh mẽ hỗ trợ độ ổn định của ứng dụng của bạn!