Write logger một cách đơn giản với Winston

Tram Ho

1. Mở đầu:

Winston được thiết kế để trở thành một thư viện ghi logger đơn giản và support cho multiple transports. A transport về cơ bản là một thiết bị lưu trữ cho cho logger của bạn. Mỗi logger winston có thể có multiple transports được cấu hình ở các cấp độ khác nhau. Ví dụ, người ta có thể muốn các error logs được lưu trữ và có thể remote từ xa, nhưng tất cả các output đều cho ra console hay local file.

2. Logging levels:

Winston có các logging levels sau

Tùy theo loại log mà bạn chọn logging levels tương ứng khi output log. Ví dụ logging lỗi thì chọn error, hoặc chỉ là các thông báo thì chọn là info.

3. Creating your own Logger:

Đầu tiên chúng ta install winston cho project của bạn

Sau đó chung ta bắt đầu tạo logger bằng winston.createLogger:

Để xuất log trong project bạn dùng đoạn code sau:

Tất nhiên đoạn code phía trên chỉ có thể giúp bạn xuất log mà không theo format bạn mong muốn. Hoạc bạn muốn mỗi ngày sẽ xuất ra 1 file log riêng để dễ quản lí và file không quá nặng thì bạn cần làm thêm các bước sau nữa

4.Tạo format log file:

Để tạo format log file bạn cần import format trong winston

Rồi sau đó bạn tạo một format khi bạn xuất ra file log, ở đây tôi muốn xuất nội dung log theo thứ tự timestamp, level, message

5. Create daily rotate file :

Phần này sẽ giúp bạn xuất mỗi ngày 1 file log riêng để cho bạn dễ quản lí và dung lượng file log nhỏ.

require('winston-daily-rotate-file');

6. Create log file with format and daily rotate file:

Sau đó bạn xuất log ra log file với đoạn code sau chẳng hạn:

7. Lời kết

Một điểm chú ý với các bạn là winston sẽ không hoạt động trên Heroku nhé, Heroku có log riêng của nó các bạn có thể tìm hiểu thêm. Hy vọng bài viết này sẽ giúp các bạn outlut log dễ dàng hơn, chúc các bạn thành công

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo