Sebastien Rousseau

RustLogs: thư viện ghi nhật ký nâng cao cho ứng dụng Rust

Ghi nhật ký có cấu trúc, hiệu năng cao cho các hệ thống tài chính

2 phút đọc

Hệ thống ghi nhật ký.class="img-fluid clearfix"

TL;DR. rustlogs là thư viện ghi nhật ký Rust được thiết kế cho các ứng dụng cấp doanh nghiệp: ghi nhật ký có cấu trúc, nhiều mức độ ưu tiên, hỗ trợ nhiều kênh và an toàn thread.

Điểm chính

  • Ý tưởng. Ghi nhật ký có cấu trúc theo mặc định để dễ dàng truy vấn trong ELK, Splunk hoặc Datadog.
  • Đổi mới. Định dạng đầu ra linh hoạt (JSON, văn bản, CEF, GELF).
  • Trường hợp sử dụng. Các dịch vụ tài chính, hệ thống thanh toán, microservices.
  • Hiệu năng. Bộ đệm và ghi không đồng bộ để giảm thiểu chi phí.

Vấn đề #

Vì sao ghi nhật ký có cấu trúc #

Ghi nhật ký dạng văn bản truyền thống khó tìm kiếm. Một dòng như [ERROR] failed to charge user 12345 amount 99.99 đòi hỏi biểu thức chính quy để truy vấn. Ghi nhật ký có cấu trúc xuất ra JSON:

{
  "level": "error",
  "event": "charge_failed",
  "user_id": 12345,
  "amount": 99.99,
  "currency": "USD",
  "timestamp": "2024-03-08T10:30:00Z"
}

Dữ liệu này có thể được lập chỉ mục, truy vấn và biểu đồ hoá.

API #

use rustlogs::{Logger, Level};

let logger = Logger::new()
    .with_format(Format::Json)
    .with_output(Output::Stdout);

logger.info("user_login", json!({
    "user_id": 12345,
    "ip": "192.168.1.1",
}));

logger.error("charge_failed", json!({
    "user_id": 12345,
    "amount": 99.99,
    "error": "insufficient_funds",
}));

Tính năng #

Tích hợp với hệ sinh thái #

Tương thích với tracing #

rustlogs tích hợp với hệ sinh thái tracing được sử dụng rộng rãi của Rust, cho phép tích hợp dễ dàng với các công cụ quan sát hiện có (Jaeger, OpenTelemetry).

Trường hợp sử dụng ngân hàng #

Cài đặt #

[dependencies]
rustlogs = "0.0.1"

Mã nguồn trên GitHub ⧉ theo Apache-2.0.

Kết luận #

rustlogs là một thư viện ghi nhật ký tập trung vào việc giải quyết các nhu cầu của các hệ thống tài chính: cấu trúc, hiệu năng, đa kênh. Bằng cách xây dựng quan sát từ đầu, nó tiết kiệm hàng giờ điều tra khi có sự cố.

Cập nhật lần cuối .