Log level là gì?
Log level (mức độ log) là các cấp bậc để phân loại và tổ chức các thông điệp log trong ứng dụng. Nó giúp nhà phát triển dễ dàng kiểm tra, phân tích và quản lý dữ liệu log, từ đó xác định vấn đề hoặc theo dõi hoạt động hệ thống. Các log-level thường gặp: DEBUG, INFO, WARN, ERROR, CRITICAL/FATAL.

DEBUG:
Log dùng để debug. Mục đích sử dụng thường là dành cho developer.
Thông thường là đặt log level này trên môi trường LOCAL/DEVELOPING và không cho phép ở PRODUCTION do số lượng dữ liệu log sẽ rất nhiều. Tuy nhiên đôi khi cũng phải cho phép level log này trên PRODUCTION để thực hiện ghi log và phát hiện ra các lỗi chỉ xảy ra trên PRODUCTION (Không phát sinh trên local).

Ví dụ: Hệ thống dữ liệu trên PRODUCTION thường lớn hơn nhiều so với DEVELOPING nên số lượng trường hợp xảy ra khi áp dữ liệu vào phần mềm cũng nhiều hơn. Các test-case có thể chưa bao quát được hết các lỗi –> Việc đặt debug có thể giúp developer/tester có thể giả lập lại được chính xác toàn bộ thao tác, workflow của cụm dữ liệu khi đi vào/đi ra khỏi phần mềm.

INFO:
Log mang tính chất cung cấp thông tin chung về hoạt động bình thường của ứng dụng.
Ví dụ: Hành vi đăng nhâp vào hệ thống bởi tài khoản nào, …

WARN (WARNING):
Log lại các lỗi tiềm ẩn, có thể gây ra lỗi nhưng chưa ảnh hưởng đến trải nghiệm của người dùng.
Ví dụ: Khách hàng cố tình nhấn nhiều lần vào button thanh toán trong khi người dùng không đủ điều kiện để thanh toán, các warning sẽ được log lại khi khách hàng “cố gắng” làm sai với hướng dẫn.

ERROR:
Log lại các event trên hệ thống đã gây ra lỗi tương đối lớn, có thể gây ảnh hưởng đến trải nghiệm của người dùng.

Ví dụ: Khách hàng thanh toán tiền cho dịch vụ A nhưng không thể trừ tiền của khách hàng do hệ thống thanh toán đang quá tải. Mỗi lần xảy ra sự cố này, một thông báo lỗi (log) sẽ được ghi lại với mức độ ERROR vào log files để sau này có thể đối chiếu và phân tích các lỗi do quá tải hệ thống gây ra, từ đó đánh giá ảnh hưởng của sự cố đối với khách hàng và quá trình thanh toán.

FATAL/CRITICAL:
Log chỉ định để ghi các lỗi nghiêm trọng, thậm chí là đã gây ra gián đoạn dịch vụ, treo/crash phần mềm.

Quy tắc sử dụng log level

  1. TRACE và DEBUG:
    • Chỉ dùng trong môi trường phát triển.
    • Không nên bật trong môi trường sản xuất để tránh làm quá tải log.
  2. INFO và WARN:
    • Phù hợp cho môi trường sản xuất để theo dõi hoạt động chung.
  3. ERROR và FATAL:
    • Dùng để phát hiện lỗi và sự cố trong hệ thống.

Tóm lại: Log level phân loại theo từng mục đích sử dụng, tuân theo quy định chung của từng công ty. Việc phân chia log-level sẽ giúp cho việc giám sát/bảo trì phần mềm thuận tiện hơn.

About the Author

Ngọc Tri

View all author's posts

Leave a Comment

Your email address will not be published. Required fields are marked *

Bài viết khác

Return first

Return first là gì Khi trong hàm gặp một trường hợp đặc biệt (như lỗi, dữ liệu không hợp lệ…), ta trả về kết quả ngay lập tức và kết thúc hàm. Lợi ích khi dùng Return First trong Go Code gọn, dễ đọc Ít phải thụt dòng. Đọc từ trên xuống dưới như một […]

RabbitMQ

RabbitMQ là gì ? RabbitMQ là một hệ thống Message Broker, cho phép các thành phần trong hệ thống giao tiếp với nhau bằng cách gửi và nhận các tin nhắn thông qua các hàng đợi. Các thành phần chính trong RabbitMQ Producer là nơi gửi tin nhắn vào RabbitMQ (có thể là một api […]

Naming convention

Naming convention là gì? Naming Convention – là một tập hợp các tiêu chuẩn được quy định sẵn dùng để biểu thị cho các thành phần: tên biến, tên hàm, kiểu dữ liệu,… Phong cách đặt tên phổ biến 1. Camel Case Camel Case là kiểu đặt tên con lạc đà. Quy tắc: Chữ cái đầu tiên được viết […]

Seed Data(Goose)

Seed Data là gì? Seed data là tập hợp các cậu lệnh sql hoặc đoạn code để đưa dữ liệu ban đầu vào CSDL. Mục đích Khởi tạo hệ thống với dữ liệu mặc định. Tạo dữ liệu test nhanh chóng. Hỗ trợ kiểm thử tự động (unit test, integration test). Tạo môi trường demo cho […]

Migration

Migration là gì? Migration là một cơ chế cho phép quản lý các thay đổi cấu trúc của cơ sở dữ liệu thông qua các file chứa câu lệnh định nghĩa (SQL hoặc code). Như là tạo bảng mới, thêm, sửa, xóa, cột, thêm index, tạo quan hệ giữa bảng Ưu điểm   Đồng bộ: Mọi […]

Ngôn ngữ lập trình Golang

Golang là gì? Go (hay còn gọi là Golang) là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống. Go được phát triển bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google vào năm 2007. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ […]