LogZ — Thư viện ghi nhật ký đơn giản và linh hoạt cho Python

LogZ là một thư viện ghi log nhẹ, hướng đến sự dễ sử dụng mà vẫn giữ được tính linh hoạt cao trong các tình huống thực tế. Nó mở rộng khả năng của logging chuẩn bằng cách hỗ trợ ghi nhiều đối số cùng lúc, định dạng JSON có thụt lề, luồng ghi theo ngày, và chèn trường tùy chọn một cách an toàn.

Tính năng nổi bật

  • Hệ thống khởi tạo tức thì — không cần cấu hình phức tạp
  • Hỗ trợ quay vòng file theo ngày (%Y-%m-%d.log) hoặc kích thước (rotating handler)
  • Cho phép truyền nhiều giá trị vào một lệnh log — không bắt buộc chuyển đổi sang chuỗi trước
  • Tự động định dạng nội dung dict/list thành JSON đa dòng với độ thụt lề tùy chỉnh
  • Cơ chế extra được tích hợp sẵn, tránh lỗi khi thiếu trường trong format string
  • Mức độ ghi log mặc định là DEBUG, dễ dàng điều chỉnh qua chuỗi hoặc mã số

Cài đặt

pip install logz

Sử dụng cơ bản

from logz import logger as log

log.debug("Bắt đầu xử lý")
log.info("Tải xong dữ liệu", extra={"module": "loader"})
log.warning("Cảnh báo: bộ nhớ thấp")
log.error("Lỗi kết nối mạng")
log.critical("Hệ thống không phản hồi")

try:
    raise ValueError("Dữ liệu không hợp lệ")
except Exception as e:
    log.exception("Xử lý ngoại lệ", extra={"step": "validation"})

Ghi nhiều giá trị cùng lúc

name = "Alice"
age = 32
scores = [89, 94, 77]
metadata = {"team": "backend", "env": "staging"}

log.info(name, age, scores, metadata)

Kết quả:

2024-05-21 14:22:08,102 INFO Alice 32 [89, 94, 77] {'team': 'backend', 'env': 'staging'}

Ghi vào tệp tin

Đặt đường dẫn tệp để kích hoạt ghi vào file (tự tạo handler nếu chưa tồn tại):

log.file = "logs/app.log"  # Quay vòng theo kích thước (mặc định 10MB, giữ 5 bản sao)
log.file = "logs/%Y-%m-%d-runtime.log"  # Quay vòng theo ngày

Tùy chỉnh mức độ ghi log

log.level = "WARNING"   # hoặc log.level = 30
log.debug("Không xuất hiện")  # bị bỏ qua
log.warning("Hiển thị")      # hiển thị

Thay đổi định dạng đầu ra

log.format = "%(asctime)s | %(levelname)-8s | %(name)s | %(user)s | %(message)s"
log.info("Khởi tạo phiên", extra={"user": "admin"})

Định dạng JSON tự động

payload = {"status": "success", "duration_ms": 142.6, "items": ["A", "B", "C"]}
log.info(payload, indent=2)

Kết quả:

2024-05-21 14:25:33,417 INFO log None ->
{
  "status": "success",
  "duration_ms": 142.6,
  "items": [
    "A",
    "B",
    "C"
  ]
}

Thẻ: python logging logz rotating-file-handler json-formatting

Đăng vào ngày 8 tháng 6 lúc 17:24