Logging trong Shell Script

Bài viết này giải thích chi tiết về việc sử dụng logging trong shell script và cách sử dụng syslog để ghi lại các sự kiện.

Xem thêm:

Các debug code Shell Script trên Linux

Toán tử trong Shell Script

1. Tại sao nên sử dụng logging trong shell scripts

  • Lưu lại quá trình thực thi: Khi chạy một script, việc ghi lại các sự kiện giúp theo dõi những gì đã xảy ra, khi nào và vì sao xảy ra. Điều này hữu ích khi script thực hiện nhiều hành động hoặc khi bạn muốn kiểm tra lại quá trình sau khi script chạy.
  • Lưu lại các thông tin quan trọng: Logging thường trả lời cho câu hỏi “Who”, “What”, “When”, “Where”, và “Why” một sự kiện xảy ra, giúp dễ dàng kiểm soát và gỡ lỗi.

2. Tiêu chuẩn syslog

  • Syslog là được sử dụng trên hệ điều hành Linux để ghi nhật ký các thông báo từ các chương trình hoặc ứng dụng. Thay vì mỗi ứng dụng phải tự phát triển cơ chế ghi log riêng, chúng có thể tận dụng hệ thống ghi log có sẵn.
  • Facilities và Severities: Mỗi thông báo được gán với mã facility (loại ứng dụng) và severity (mức độ nghiêm trọng). Ví dụ:
    • Facilities: kern (kernel), mail (ứng dụng email), user (người dùng), hoặc local0local7 (tùy chỉnh cho script).
    • Severities: emergency, alert, critical, error, warning, notice, info, debug.
  • Hệ thống logger: Các thông báo sẽ được hệ thống logger xử lý và lưu trữ, thường nằm trong tệp như /var/log/messages hoặc /var/log/syslog.

3. Sử dụng lệnh logger trong shell scripts

  • Lệnh logger: Dùng để tạo các thông báo syslog từ shell script. Mặc định, nó sử dụng facility user và mức độ severity là notice.
  • Tùy chỉnh logger:
    • Sử dụng -p để chỉ định facility và severity (ví dụ: logger -p local0.info).
    • Sử dụng -t để gán tag (thường là tên script), giúp dễ tìm các thông báo liên quan.
    • Sử dụng -i để ghi PID của tiến trình vào log.
logger "Message"
logger -p local0.info "Message"
logger -t myscript -p local0.info "Message"
logger -i -t myscript "Message"

4. Tạo hàm ghi log tùy chỉnh

  • Hàm logit: Đây là một ví dụ về hàm tùy chỉnh trong shell script để xử lý việc ghi log. Hàm này nhận mức độ log và thông báo, sau đó in thông tin ra màn hình hoặc sử dụng lệnh logger để ghi lại.
  • Ví dụ sử dụng:
    • logit INFO "Processing data."
    • Nếu một lệnh như fetch-data $HOST thất bại, hàm logit sẽ ghi một thông báo lỗi với mức độ ERROR.

Kết luận

Qua bài viết này, bạn đã học được cách sử dụng cơ chế logging trong shell script, cách hoạt động của tiêu chuẩn syslog, và cách tạo ra các thông báo log bằng lệnh logger. Cảm ơn bạn đã tham khảo trên ttnguyen.net.

Bài viết liên quan:

Vòng lặp trong Shell Script

Mảng trong Shell Script

Hàm trong Shell Script

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em