paint-brush
10 thư viện ghi nhật ký Node.js tốt nhấttừ tác giả@playerzero
50,636 lượt đọc
50,636 lượt đọc

10 thư viện ghi nhật ký Node.js tốt nhất

từ tác giả PlayerZero22m2023/02/15
Read on Terminal Reader

dài quá đọc không nổi

Chúng tôi đã tổng hợp danh sách 10 thư viện ghi nhật ký Node.js hàng đầu và cung cấp cho bạn mã bạn cần để sử dụng chúng. Thưởng thức!
featured image - 10 thư viện ghi nhật ký Node.js tốt nhất
PlayerZero HackerNoon profile picture
0-item

Blog này sẽ thảo luận về giá trị của việc sử dụng các thư viện ghi nhật ký và tóm tắt 10 công cụ ghi nhật ký được đánh giá tốt nhất mà chúng tôi đã tìm thấy cho Node.js. Tại @playerzero, chúng tôi thường sử dụng các thư viện ghi nhật ký node.js để tạo và quản lý các sự kiện nhật ký. Tìm hiểu thêm về cách chúng tôi áp dụng phương pháp độc đáo của mình để giám sát những vấn đề quan trọng đối với cả ứng dụng phía trước và ứng dụng phụ trợ ngay hôm nay https://www.playerzero.app/


  • pino

  • Winston

  • Bunyan

  • Morgan

  • Mức đăng nhập

  • Nhật ký4js

  • npmlog

  • gầm lên

  • người theo dõi

  • tín hiệu


Từ góc độ cấp cao, ghi nhật ký Node.js rất quan trọng vì nó giúp các nhà phát triển theo dõi các sự kiện và hiệu suất ứng dụng của họ, chẩn đoán và khắc phục sự cố, theo dõi hành vi của hệ thống và đưa ra quyết định sáng suốt. Ghi nhật ký cung cấp bản ghi về hoạt động của ứng dụng, cho phép nhà phát triển xác định và gỡ lỗi sự cố, hiểu hành vi của người dùng và cải thiện hiệu suất tổng thể cũng như tính ổn định của hệ thống. Ghi nhật ký cũng có thể hữu ích trong môi trường sản xuất để phát hiện và sửa lỗi, giám sát hiệu suất hệ thống và phát hiện sự cố bảo mật.

Ghi nhật ký so với theo dõi

Bất cứ khi nào có sự cố xảy ra trong một ứng dụng, các nhà phát triển có tùy chọn theo dõi nguồn gốc của nó thông qua theo dõi ngăn xếp. Nhưng… chỉ dựa vào dấu vết ngăn xếp mới vẽ được một nửa bức tranh. Theo dõi sẽ cung cấp cho bạn thông tin về việc thực thi ứng dụng, bao gồm luồng yêu cầu, truy vấn cơ sở dữ liệu, lệnh gọi API bên ngoài và chỉ số hiệu suất - có thể khá hữu ích. Nói chung, dấu vết được sử dụng để hiểu hành vi của ứng dụng ở cấp độ chi tiết và để xác định các tắc nghẽn hiệu suất.


Ghi nhật ký lấp đầy nửa còn lại của bức tranh. Ghi nhật ký là quá trình ghi lại các thông báo và sự kiện liên quan đến một ứng dụng, chẳng hạn như lỗi, cảnh báo, chỉ số hiệu suất và thông tin gỡ lỗi. Đăng nhập Node.js được sử dụng để chẩn đoán sự cố, hiểu hành vi của người dùng và cải thiện hiệu suất tổng thể cũng như tính ổn định của ứng dụng. Nó cũng cung cấp một bản ghi hoạt động trong một ứng dụng, cho phép các nhà phát triển xác định và gỡ lỗi các vấn đề cũng như đưa ra các quyết định sáng suốt hơn.

Tại sao nên sử dụng thư viện ghi nhật ký cho Node.js?

Có một số lý do tại sao bạn nên sử dụng thư viện ghi nhật ký Node.js:


  1. Cải thiện gỡ lỗi - thư viện ghi nhật ký cung cấp thông tin chi tiết về lỗi và sự cố, cho phép nhà phát triển chẩn đoán và khắc phục sự cố hiệu quả hơn.
  2. Khả năng hiển thị nâng cao - ghi nhật ký cung cấp một cái nhìn rõ ràng về hành vi và hiệu suất của một ứng dụng, cho phép các nhà phát triển đưa ra quyết định sáng suốt và cải thiện hệ thống.
  3. Hiệu suất tốt hơn - các thư viện ghi nhật ký có thể được tối ưu hóa cho hiệu suất, giảm chi phí ghi nhật ký và cải thiện hiệu suất tổng thể của hệ thống.
  4. Ghi nhật ký tập trung - nhiều thư viện ghi nhật ký cho phép ghi nhật ký vào máy chủ nhật ký tập trung, giúp thu thập, xem và phân tích dữ liệu nhật ký dễ dàng hơn.
  5. Tùy chỉnh - thư viện ghi nhật ký có thể được tùy chỉnh để đáp ứng các nhu cầu cụ thể, chẳng hạn như cấp độ nhật ký tùy chỉnh, định dạng đầu ra và bộ lọc.

cấp độ ghi nhật ký

Các mức ghi nhật ký là một cách để phân loại mức độ quan trọng hoặc mức độ nghiêm trọng của các thông điệp tường trình. Thông thường, có một số cấp độ, từ lỗi nghiêm trọng đến thông báo thông tin và mỗi cấp độ được liên kết với một giá trị số có thể được sử dụng để lọc thông báo tường trình trong thư viện. Dưới đây là các cấp độ phổ biến nhất:


Mức nhật ký FATAL

Có lẽ không có gì ngạc nhiên khi mức nhật ký FATAL là mức độ nghiêm trọng cho biết lỗi nghiêm trọng trong ứng dụng - nghĩa là nhật ký có mức FATAL cho biết ứng dụng không thể tiếp tục chạy bình thường nếu không có sự can thiệp của nhà phát triển.


Cấp độ nhật ERROR

Mức nhật ký ERROR chỉ ra rằng một ứng dụng hiện có khả năng chạy, NHƯNG, nó đang gặp sự cố. Thông thường, điều này chỉ ra rằng một tác vụ bắt buộc trong ứng dụng không thành công - rằng có một ngoại lệ, hành vi không mong muốn hoặc đầu vào không chính xác.


Mức nhật ký WARN BÁO

WARN là cấp độ nhật ký ít nghiêm trọng hơn ERROR , tuy nhiên, không nên bỏ qua. Nhật ký WARN có thể được sử dụng để chủ động xác định sự cố và ngăn sự cố trở nên nghiêm trọng hơn vì chúng chỉ ra rằng điều gì đó trong ứng dụng của bạn có thể trở thành chất xúc tác cho sự cố nghiêm trọng hơn.


Cấp INFO THÔNG TIN

Cấp độ nhật ký INFO là một loại thông báo tường trình được sử dụng trong các hệ thống ghi nhật ký để biểu thị một thông báo chung, mang tính thông tin. Nó thường được sử dụng để ghi nhật ký các sự kiện dự kiến, thường lệ trong ứng dụng hoặc hệ thống, chẳng hạn như bắt đầu một quy trình, hoàn thành một tác vụ hoặc thay đổi trạng thái của hệ thống. Những cảnh báo này thường có thể bị bỏ qua vì chúng nhằm xác nhận rằng một ứng dụng đang hoạt động bình thường.


DEBUG LỖI cấp nhật

Thông thường, cấp độ nhật ký DEBUG cung cấp thông tin hữu ích trong quá trình gỡ lỗi. Nhật ký DEBUG là loại thông báo nhật ký chi tiết nhất và cung cấp chế độ xem chi tiết về hoạt động bên trong của ứng dụng. Mục đích chính của nhật ký DEBUG là giúp các nhà phát triển hiểu hệ thống đang làm gì, xác định lỗi và sự cố cũng như chẩn đoán sự cố.

10 thư viện ghi nhật ký Node.js tốt nhất & cách bắt đầu với chúng

#1. pino

lợi ích pino

Pino là một công cụ ghi nhật ký lâu đời và rất phổ biến, với hơn 10,9 nghìn sao trên Github và hàng triệu lượt tải xuống trên npm. Pino là một thư viện ghi nhật ký phổ biến cho Node.js vì nó cung cấp một số tính năng chính giúp nó rất phù hợp để sử dụng trong các ứng dụng Node.js:


  • Nhanh - Pino được thiết kế nhanh và nhẹ, tập trung vào hiệu suất. Nó sử dụng định dạng nhị phân cho các thông điệp tường trình, cho phép nó tạo đầu ra nhật ký một cách nhanh chóng và hiệu quả.

  • Nhật ký có cấu trúc - Pino ghi nhật ký thông báo ở định dạng JSON, cho phép dễ dàng phân tích cú pháp, lọc và phân tích dữ liệu nhật ký. Điều này giúp dễ dàng tìm kiếm, trực quan hóa và phân tích dữ liệu nhật ký cũng như tích hợp dữ liệu nhật ký vào các hệ thống khác.

  • Dễ mở rộng - Pino được thiết kế để có khả năng mở rộng cao và bao gồm một số plugin tích hợp có thể được sử dụng để thêm chức năng bổ sung, chẳng hạn như ghi dữ liệu nhật ký vào tệp hoặc gửi dữ liệu nhật ký đến máy chủ từ xa.

  • Chi phí thấp - Pino là thư viện ghi nhật ký Node.js hiệu quả cao do sử dụng tài nguyên tối thiểu. Quá trình ghi nhật ký với Pino dần dần tích lũy thông báo, dẫn đến việc điều chỉnh ứng dụng và giảm số lượng yêu cầu mỗi giây. Điều tiết là một kỹ thuật trong đó chức năng được kết nối với một sự kiện được kích hoạt để chỉ chạy một lần trong khung thời gian đã chỉ định, ngay cả khi sự kiện được kích hoạt nhiều lần.

  • Vận chuyển - Pino cung cấp nhiều tùy chọn để gửi nhật ký, bao gồm ghi vào tệp, hiển thị trong bảng điều khiển và sử dụng các nền tảng như Sentry, Azure Application Insights và CouchDB.


Để sử dụng Pino trong ứng dụng Node.js, hãy làm theo các bước sau:

Cài đặt Pino

Để cài đặt Pino, chỉ cần cài đặt nó bằng cách chạy lệnh sau trong một thư mục mới:

 npm install pino


Nhập - trong ứng dụng Node.js của bạn, nhập Pino bằng cách thêm dòng mã sau vào đầu tệp của bạn:

 const pino = require('pino');

Sử dụng Pino

Khởi tạo - khởi tạo Pino bằng cách tạo một phiên bản nhật ký, ví dụ:

 const logger = pino({ level: 'info' });


Tập lệnh này tạo nhật ký có cấp độ ghi nhật ký INFO trở lên trên bảng điều khiển.


Bằng cách đặt mức thành thông tin, Pino sẽ ghi nhật ký tin nhắn với mức ghi là INFO , WARN , ERRORFATAL . Các thư có mức ghi dưới INFO , chẳng hạn như DEBUG , sẽ không được ghi.


Mã này chỉ tạo một phiên bản ghi nhật ký Pino với mức nhật ký được đặt thành THÔNG TIN. Không có thông báo nhật ký nào được tạo hoặc hiển thị cho đến khi bạn ghi nhật ký nào đó bằng phiên bản trình ghi nhật ký. Ví dụ:

 logger.info('This is an info message');

Điều này sẽ tạo ra đầu ra sau trên bàn điều khiển:

 {"level":30,"time":1624825088703,"msg":"This is an info message","pid":1234,"hostname":"my-machine"}


Dữ liệu đã ghi được hiển thị trên bảng điều khiển bao gồm cấp độ nhật ký, dấu thời gian khi nó được ghi, thông báo đang được ghi, mã định danh cho nhật ký và tên máy chủ.


Ghi nhật ký - bạn cũng có thể sử dụng phiên bản trình logger để ghi nhật ký các thông báo khác trong ứng dụng của mình. Ví dụ:

 logger.warn('This is a warning message'); logger.error('This is an error message');


Đầu ra - theo mặc định, Pino đăng nhập vào bảng điều khiển. Nếu bạn muốn thay đổi đầu ra, bạn có thể sử dụng một trong các phương thức vận chuyển có sẵn của Pino mà chúng tôi đã đề cập trước đó, chẳng hạn như ghi vào tệp, gửi nhật ký đến một dịch vụ từ xa như Sentry hoặc sử dụng Thông tin chi tiết về ứng dụng Azure. Để biết thêm thông tin, bạn có thể tham khảo phần "Phương tiện giao thông đã biết" của Pino.

Cài đặt Pino đẹp

Tính năng định dạng NDJSON pino-pretty cơ bản của Pino là một trình định dạng đơn giản tuyệt vời dành cho nhật ký Pino và rất dễ cài đặt. Đây là cách để thiết lập và chạy nó:


Bước 1 - cài đặt pino-pretty làm phần phụ thuộc trong dự án Node.js của bạn bằng cách chạy lệnh sau trong thiết bị đầu cuối của bạn:

 npm install pino-pretty


Bước 2 - nhập pino-pretty vào ứng dụng Node.js của bạn bằng cách thêm dòng mã sau vào đầu tệp của bạn:

 const pino = require('pino'); const pinoPretty = require('pino-pretty'); const logger = pino({ level: 'info' }); logger.pipe(pinoPretty());


Với hai đoạn mã này, bạn đã cài đặt pino-pretty và thiết lập nó để định dạng nhật ký Pino của mình. Giờ đây, bạn có thể sử dụng phiên bản trình ghi nhật ký để ghi nhật ký tin nhắn trong ứng dụng của mình và nhật ký sẽ được hiển thị ở định dạng đẹp mắt, dễ đọc trên bảng điều khiển.


Tìm hiểu thêm về gỡ lỗi với Pino trong Cách gỡ lỗi Node.js bằng các công cụ tốt nhất có sẵn của @RisingStack

#2. Winston

phúc lợi của Winston

Với hơn 20 nghìn sao trên GitHub, Winston là thư viện ghi nhật ký rất phổ biến cho Node.js. Winston là một thư viện ghi nhật ký duy nhất trong hệ sinh thái Node.js vì bộ tính năng toàn diện và tính dễ sử dụng của nó. Một số lý do khiến Winston nổi bật là:


  • Linh hoạt - Winston có khả năng tùy biến cao và cung cấp nhiều tùy chọn ghi nhật ký cũng như cơ chế vận chuyển cho phép ghi nhật ký vào nhiều đầu ra, chẳng hạn như bảng điều khiển, tệp hoặc máy chủ từ xa.
  • Nhật ký có thể truy vấn - Winston cung cấp kho lưu trữ nhật ký có thể truy vấn, giúp tìm kiếm và phân tích nhật ký dễ dàng hơn.
  • Dễ sử dụng - Winston có một API đơn giản, dễ sử dụng giúp bạn dễ dàng bắt đầu đăng nhập ứng dụng Node.js. Nó cung cấp một bộ chức năng cốt lõi tối thiểu, đồng thời cho phép các nhà phát triển mở rộng và tùy chỉnh chức năng ghi nhật ký khi cần.
  • Tài liệu đầy đủ - Winston có tài liệu toàn diện cung cấp thông tin chi tiết về API của nó, đồng thời bao gồm một số ví dụ và hướng dẫn để giúp các nhà phát triển bắt đầu nhanh chóng và dễ dàng.
  • Hướng đến cộng đồng - Winston là một dự án nguồn mở với cộng đồng các nhà phát triển lớn và tích cực, giúp đảm bảo rằng thư viện được duy trì tốt, không có lỗi và được cập nhật để bắt kịp các xu hướng và công nghệ mới nhất.

Cài đặt Winston

Để cài đặt Winston trong dự án Node.js của bạn, bạn có thể sử dụng trình quản lý gói npm bằng cách chạy lệnh sau trong thiết bị đầu cuối của mình:

 npm install winston

Sử dụng Winston

Khi quá trình cài đặt hoàn tất, bạn có thể nhập và sử dụng Winston trong mã Node.js của mình bằng cách bao gồm dòng sau:

 const winston = require('winston');

Sau đó, bạn có thể sử dụng thư viện Winston để định cấu hình và tạo các phiên bản ghi nhật ký của mình, ví dụ:

 const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console() ] });

Điều này tạo ra một phiên bản trình ghi nhật ký với cấp độ thông tin và giao diện điều khiển. Bạn có thể sử dụng phiên bản trình ghi nhật ký này để ghi nhật ký tin nhắn trong ứng dụng của mình, ví dụ:

 logger.info('Hello World');

Thao tác này sẽ ghi thông báo Hello World vào bảng điều khiển với cấp độ nhật ký thông tin.

Cấp độ đăng nhập trong Winston

Winston được trang bị sáu cấp độ ghi nhật ký mặc định, được sắp xếp theo hướng dẫn được nêu trong tài liệu RFC5424. Các cấp độ được chỉ định mức độ ưu tiên bằng số, với mức độ nghiêm trọng cao nhất được chỉ định số thấp nhất. Sáu cấp độ và các giá trị ưu tiên tương ứng của chúng là:


 { error: 0, warn: 1, info: 2, http: 3, verbose: 4, debug: 5, silly: 6 }


Đối với mỗi cấp độ trong số sáu cấp độ nhật ký, có một phương thức tương ứng trên đối tượng nhật ký:

 logger.error('error'); logger.warn('warn'); logger.info('info'); logger.verbose('verbose'); logger.debug('debug'); logger.silly('silly');


Bạn cũng có thể chuyển một chuỗi biểu thị mức ghi nhật ký cho phương thức log():

 logger.log('error', 'error message'); logger.log('info', 'info message');


Thuộc tính level trên logger ghi thông báo nhật ký nào sẽ được chuyển đến phương tiện truyền tải mà bạn đã định cấu hình. Chẳng hạn, nếu thuộc tính level được đặt thành info , thì chỉ các mục nhật ký có mức độ nghiêm trọng của info hoặc cao hơn mới được ghi và tất cả các mục khác sẽ bị loại bỏ. Điều này có nghĩa là trong cấu hình hiện tại, chỉ các thông báo nhật ký có mức info , warnerror mới được xuất ra.

#3. Bunyan

lợi ích Bunyan

Bunyan là thư viện ghi nhật ký duy nhất cho Node.js vì nó tập trung vào việc làm cho dữ liệu nhật ký có cấu trúc và dễ đọc hơn (chúng đạt được điều này bằng cách tuần tự hóa nhật ký dưới dạng đối tượng JSON thay vì văn bản thuần túy). Đây là lý do tại sao Bunyan có 7k sao trên Github:


  1. Định dạng JSON - không giống như một số thư viện ghi nhật ký khác, Bunyan ghi dữ liệu ở định dạng JSON, giúp dễ dàng phân tích cú pháp và tích hợp với các công cụ và nền tảng khác.
  2. Cấp độ ghi nhật ký linh hoạt - Bunyan hỗ trợ nhiều cấp độ ghi nhật ký với các tùy chọn linh hoạt để quản lý ngưỡng và mức độ nghiêm trọng của nhật ký.
  3. Tuần tự hóa - Trong Bunyan, tồn tại một tính năng được gọi là tuần tự hóa, trong đó các hàm chuyển đổi một đối tượng JavaScript thành một đối tượng có thể biểu diễn bằng JSON. Điều này cho phép một phiên bản trình ghi nhật ký cụ thể có bộ tuần tự hóa liên kết tên trường bản ghi nhật ký với chức năng tuần tự hóa.
  4. API dễ sử dụng - Bunyan cung cấp một API đơn giản, dễ sử dụng để ghi nhật ký, giúp các nhà phát triển ở mọi cấp độ kỹ năng có thể truy cập được.
  5. Plugin và phương tiện vận chuyển - Bunyan hỗ trợ nhiều loại plugin và phương tiện vận chuyển, chẳng hạn như bảng điều khiển, tệp, HTTP và email, giúp việc tùy chỉnh đầu ra ghi nhật ký dễ dàng hơn để đáp ứng các nhu cầu và yêu cầu cụ thể.

Cài đặt Bunyan

Để cài đặt Bunyan, bạn có thể chạy lệnh sau trong terminal hoặc dấu nhắc lệnh:

 npm install bunyan


Điều này sẽ cài đặt thư viện Bunyan và các phụ thuộc của nó trong dự án Node.js của bạn. Sau khi cài đặt, bạn có thể yêu cầu thư viện trong mã của mình và bắt đầu sử dụng nó.

Sử dụng Bunyan

Nhập Bunyan vào dự án của bạn - ở đầu tệp JavaScript của bạn, hãy thêm dòng sau:

 const bunyan = require('bunyan');


Tạo phiên bản trình ghi nhật ký - tiếp theo, hãy tạo phiên bản trình ghi nhật ký bằng cách sử dụng mã sau:

 const logger = bunyan.createLogger({ name: 'my-app-name', level: 'info' });


Trong ví dụ này, name là tên ứng dụng của bạn và level chỉ định mức nhật ký tối thiểu mà bạn muốn xem.


Ghi nhật ký - để ghi nhật ký một tin nhắn, chỉ cần gọi một trong các phương thức nhật ký của Bunyan, chẳng hạn như thông tin, cảnh báo hoặc lỗi và chuyển nội dung bạn muốn ghi, như sau:

 logger.info('This is an info log message'); logger.warn('This is a warn log message'); logger.error('This is an error log message');


Chạy mã của bạn - cuối cùng, hãy chạy mã của bạn và bạn sẽ thấy các thông báo đã ghi trong bảng điều khiển.

Theo mặc định, Bunyan xuất nhật ký ở định dạng JSON, giúp dễ dàng phân tích cú pháp và phân tích nhật ký bằng các công cụ quản lý nhật ký. Bạn cũng có thể tùy chỉnh định dạng bằng tùy chọn luồng của Bunyan.

#4. Morgan

lợi ích của Morgan

Morgan là một thư viện ghi nhật ký duy nhất cho Node.js vì nhiều lý do, chủ yếu là vị trí duy nhất của nó dưới dạng phần mềm trung gian. Điều này cùng với những lý do khác đã khiến nó trở nên rất phổ biến, với 7,3 nghìn sao trên GitHub tại thời điểm chúng tôi viết bài này. Dưới đây là một vài lý do tại sao Morgan rất phổ biến:


  1. Dựa trên phần mềm trung gian - Morgan hoạt động như phần mềm trung gian trong khung Node.js Express, giúp dễ dàng tích hợp vào các ứng dụng dựa trên Express hiện có.
  2. Có thể tùy chỉnh - Morgan cung cấp nhiều tùy chọn tùy chỉnh, từ định dạng nhật ký đến mã thông báo tùy chỉnh, cho phép các nhà phát triển điều chỉnh nhật ký của họ theo nhu cầu cụ thể của họ.
  3. Dựa trên luồng - Morgan có thể ghi dữ liệu nhật ký vào nhiều luồng đầu ra khác nhau, bao gồm bảng điều khiển, tệp hoặc thậm chí cả máy chủ từ xa.
  4. Nhanh và nhẹ - Morgan được thiết kế nhanh và nhẹ, khiến nó phù hợp với các ứng dụng có lưu lượng truy cập cao, nơi hiệu suất là rất quan trọng.
  5. Ghi nhật ký yêu cầu HTTP - Morgan được thiết kế đặc biệt để ghi nhật ký các yêu cầu và phản hồi HTTP, rất hữu ích cho việc gỡ lỗi và phân tích hiệu suất của máy chủ web.

Cài đặt Morgan

Bắt đầu bằng cách cài đặt gói morgan bằng npm:

 npm install morgan

Sử dụng Morgan

Sau khi hoàn tất quá trình cài đặt, bạn cần nhập thư viện bằng cách sử dụng chức năng "yêu cầu" rồi tích hợp nó vào ứng dụng Express.js của bạn dưới dạng phần mềm trung gian.


Mã cho điều này sẽ giống như sau:

 var morgan = require('morgan'); app.use(morgan('dev'));


Đối số "dev" là một tùy chọn định dạng do Morgan cung cấp. Morgan cung cấp năm định dạng ghi nhật ký khác nhau, bao gồm:

  1. tiny có một đầu ra rất nhỏ.
  2. short bao gồm thời gian phản hồi và viết tắt nhật ký theo mặc định.
  3. dev cung cấp đầu ra ngắn gọn, được mã hóa màu để sử dụng trong quá trình phát triển
  4. common cũng sử dụng đầu ra nhật ký kết hợp của Apache.
  5. combined sử dụng đầu ra nhật ký kết hợp Apache được tiêu chuẩn hóa.


Bạn có thể chọn giữa các định dạng này bằng cách sử dụng đối số thích hợp khi tích hợp Morgan vào ứng dụng của mình, như minh họa bên dưới:

 app.use(morgan('combined')); app.use(morgan('common')); app.use(morgan('dev')); app.use(morgan('short')); app.use(morgan('tiny'));

#5. Mức đăng nhập

lợi ích loglevel

Loglevel ít phổ biến hơn một chút so với một số tùy chọn khác được liệt kê ở đây, với 2,4 nghìn sao trên Github, nhưng dù sao nó vẫn là một thư viện ghi nhật ký nhẹ, tuyệt vời. Dưới đây là một vài lý do tại sao loglevel là thư viện ghi nhật ký duy nhất cho Node.js:


  1. Dấu chân mã tối thiểu - loglevel là một thư viện rất nhẹ, làm cho nó trở nên lý tưởng cho các tình huống mà bạn cần một lượng mã tối thiểu.
  2. Các mức ghi nhật ký động - loglevel cung cấp các mức ghi nhật ký động, cho phép bạn thay đổi mức ghi nhật ký trong thời gian chạy, giúp dễ dàng chuyển đổi giữa các mức chi tiết nhật ký khác nhau mà không phải sửa đổi mã.
  3. API đơn giản - API của loglevel rất đơn giản, cung cấp một cách dễ sử dụng và linh hoạt để ghi nhật ký thông điệp.
  4. Khả năng tương thích với trình duyệt - loglevel tương thích với cả Node.js và trình duyệt web, khiến nó trở thành lựa chọn linh hoạt để đăng nhập trong nhiều môi trường khác nhau.
  5. Khả năng tương thích đa nền tảng - loglevel được xây dựng dựa trên log4js, đây là thư viện ghi nhật ký được sử dụng rộng rãi, đảm bảo khả năng tương thích trên các nền tảng khác nhau.

Cài đặt Loglevel

Để thiết lập loglevel, trước tiên bạn cần cài đặt nó bằng npm:

 npm install loglevel

Sử dụng Loglevel

Khi bạn đã cài đặt xong, bạn có thể nhập nó vào dự án Node.js của mình và bắt đầu sử dụng nó bằng cách đặt cấp độ nhật ký:


 const log = require('loglevel'); log.setLevel(log.levels.ERROR);


Bằng cách đặt mức nhật ký thành ERROR, bạn đang chỉ định rằng chỉ những thông báo nhật ký có mức độ nghiêm trọng của ERROR mới được ghi lại. Sau khi đặt cấp độ nhật ký, bạn có thể sử dụng các phương pháp sau để ghi nhật ký tin nhắn ở các cấp độ khác nhau:


 log.trace('This is a trace message'); log.debug('This is a debug message'); log.info('This is an info message'); log.warn('This is a warning message'); log.error('This is an error message');


Mức nhật ký bạn đặt sẽ xác định thư nào sẽ được ghi và thư nào sẽ bị bỏ qua. Ví dụ: nếu cấp độ nhật ký được đặt thành thông tin, thì chỉ những thông báo được ghi bằng log.info và log.warn hoặc log.error mới được hiển thị.

#6. Nhật ký4js

Lợi ích của log4js

Tất nhiên, chúng ta không thể đề cập đến loglevel mà không liệt kê người anh cả của nó, Log4js. Log4js là một thư viện ghi nhật ký JavaScript được bắt đầu như một cổng của thư viện ghi nhật ký Java phổ biến Log4j. Nó được tạo ra để cung cấp giải pháp ghi nhật ký tương tự cho các ứng dụng JavaScript và kể từ đó đã phát triển để cung cấp các tính năng và khả năng ghi nhật ký nâng cao. Với hơn 5,6 nghìn sao trên Github, đây là một số lý do khiến Log4js trở nên phổ biến:


  • Tính linh hoạt trong cấu hình - Log4js cung cấp nhiều tùy chọn để ghi nhật ký, bao gồm các cấp độ nhật ký, các loại trình bổ sung khác nhau (ví dụ: bảng điều khiển, tệp, mạng) và khả năng chỉ định các cấu hình nhật ký khác nhau cho các phần khác nhau của ứng dụng.
  • Các ứng dụng tùy chỉnh - Log4js hỗ trợ tạo các ứng dụng tùy chỉnh, cho phép các nhà phát triển mở rộng thư viện để đáp ứng các yêu cầu ghi nhật ký cụ thể của họ.
  • Hỗ trợ ngữ cảnh nhật ký - Log4js cho phép nhà phát triển liên kết thông báo tường trình với thông tin ngữ cảnh bổ sung, chẳng hạn như dữ liệu yêu cầu của người dùng, để làm cho thông điệp tường trình hữu ích hơn cho việc gỡ lỗi.
  • Cấu hình cấp độ nhật ký động - Log4js hỗ trợ thay đổi cấp độ nhật ký khi chạy, giúp quản lý việc ghi nhật ký trong môi trường sản xuất dễ dàng hơn.
  • Tích hợp với các công cụ khác - Log4js có hỗ trợ tích hợp cho các công cụ phổ biến, chẳng hạn như Logstash và Graylog, giúp tích hợp đăng nhập vào quy trình phân tích và giám sát ứng dụng rộng hơn dễ dàng hơn.

Cài đặt Log4js

Để cài đặt Log4js, bạn có thể sử dụng trình quản lý gói npm bằng cách chạy lệnh sau trong thiết bị đầu cuối của mình:


 npm install log4js


Thao tác này sẽ cài đặt phiên bản Log4js mới nhất và các phần phụ thuộc của nó. Sau đó, bạn có thể yêu cầu thư viện trong ứng dụng Node.js của mình và bắt đầu sử dụng nó để ghi nhật ký tin nhắn.

Sử dụng Log4js

Để bắt đầu sử dụng Log4js, trước tiên hãy yêu cầu nó trong mã của bạn và định cấu hình nó:

 const log4js = require('log4js'); log4js.configure({ appenders: { console: { type: 'console' } }, categories: { default: { appenders: ['console'], level: 'info' } } }); const logger = log4js.getLogger();


Sau đó, bạn có thể sử dụng trình ghi nhật ký để ghi nhật ký tin nhắn ở các cấp độ khác nhau:

 logger.trace('Entering cheese testing'); logger.debug('Got cheese.'); logger.info('Cheese is Gouda.'); logger.warn('Cheese is quite smelly.'); logger.error('Cheese is too ripe!'); logger.fatal('Cheese was breeding ground for listeria.');


Đây là một ví dụ về việc sử dụng Log4js để ghi nhật ký tin nhắn cho nhiều ứng dụng (bảng điều khiển và tệp) với các cấp độ nhật ký khác nhau:

 const log4js = require('log4js'); log4js.configure({ appenders: { console: { type: 'console' }, file: { type: 'file', filename: 'app.log' } }, categories: { default: { appenders: ['console'], level: 'info' }, file: { appenders: ['file'], level: 'error' } } }); const logger = log4js.getLogger(); const fileLogger = log4js.getLogger('file'); logger.info('This is an informational message'); fileLogger.error('This is an error message');


Trong ví dụ này, trình ghi nhật ký có danh mục "mặc định" được định cấu hình để ghi các thông báo có thông tin cấp độ trở lên vào bảng điều khiển. Trình ghi nhật ký có danh mục "tệp" được định cấu hình để ghi các thông báo có lỗi cấp độ trở lên vào tệp. Hai bộ ghi có thể được sử dụng thay thế cho nhau để ghi các tin nhắn tới các ứng dụng tương ứng của chúng.

#7. npmlog

lợi ích của npmlog

Giá trị duy nhất của npmlog nằm ở tính đơn giản và chi phí tối thiểu, khiến nó rất phù hợp để sử dụng trong các dự án quy mô nhỏ hoặc nhạy cảm với hiệu suất. Thật dễ dàng để định cấu hình và tích hợp liền mạch với hệ sinh thái npm (không ngạc nhiên vì tiện ích ghi nhật ký chính thức của npm), khiến nó trở thành lựa chọn phổ biến cho các nhà phát triển đang tìm kiếm giải pháp ghi nhật ký nhẹ. Đây là một vài lý do khiến npmlog lọt vào danh sách này:


  1. Nhẹ - npmlog có một cơ sở mã nhỏ và chi phí tối thiểu, làm cho nó rất phù hợp cho các dự án quy mô nhỏ hoặc nhạy cảm với hiệu suất.
  2. Tích hợp dễ dàng với npm - npmlog được thiết kế đặc biệt để sử dụng trong hệ sinh thái npm, giúp dễ dàng tích hợp với các gói và công cụ npm khác.
  3. Có thể tùy chỉnh - npmlog cho phép bạn tùy chỉnh cấp độ nhật ký, luồng và tiền tố, cung cấp cho bạn toàn quyền kiểm soát cách tạo và hiển thị nhật ký của bạn.
  4. Đa năng - npmlog phù hợp với nhiều loại dự án, từ các tập lệnh nhỏ đến các ứng dụng lớn, làm cho nó trở thành một công cụ ghi nhật ký đa năng và linh hoạt.
  5. Sử dụng đơn giản - npmlog có API đơn giản và yêu cầu thiết lập tối thiểu, giúp bắt đầu đăng nhập dự án Node.js của bạn nhanh chóng và dễ dàng.

Cài đặt Npmlog

Để cài đặt npmlog, bạn cần cài đặt Node.js và npm (Trình quản lý gói nút) trên máy của mình. Sau đó, bạn có thể chạy lệnh sau trong thiết bị đầu cuối hoặc dấu nhắc lệnh:

 npm install npmlog


Điều này sẽ tải xuống và cài đặt phiên bản mới nhất của npmlog và các phụ thuộc của nó, cho phép bạn sử dụng nó trong dự án Node.js của mình.

Sử dụng Npmlog

Đây là một ví dụ về cách sử dụng npmlog trong dự án Node.js:

 const log = require('npmlog'); log.level = 'verbose'; log.verbose('This is a verbose message'); log.info('This is an informational message'); log.warn('This is a warning'); log.error('This is an error');


Trong ví dụ này, chúng tôi bắt đầu bằng cách yêu cầu mô-đun npmlog và gán nó cho một biến. Sau đó, chúng tôi đặt mức nhật ký thành verbose , có nghĩa là các thông báo có mức nhật ký dài verbose , info , warnerror sẽ được hiển thị. Sau đó, chúng tôi ghi lại các thông báo ở các cấp độ khác nhau bằng cách sử dụng các phương thức verbose , info , warnerror .


Lưu ý rằng theo mặc định, npmlog ghi vào process.stderr . Nếu bạn cần ghi vào process.stdout , bạn có thể sử dụng thuộc tính log.stream .

#số 8. gầm lên

Lợi ích của Roarr

Thư viện roamr là một công cụ ghi nhật ký Node.js được thiết kế để tạo dữ liệu có cấu trúc mà không cần khởi tạo. Nó có giao diện dòng lệnh (CLI) và hỗ trợ các biến môi trường, làm cho nó trở nên linh hoạt và dễ sử dụng. Ngoài ra, roamr tương thích với cả môi trường trình duyệt và Node.js, khiến nó trở thành giải pháp ghi nhật ký linh hoạt cho nhiều ứng dụng.


Dưới đây là một số điểm chính làm nổi bật giá trị độc đáo của thư viện roamr:


  1. Ghi nhật ký có cấu trúc - thư viện tạo nhật ký ở định dạng có cấu trúc, giúp dễ dàng xử lý và phân tích nhật ký bằng các công cụ có thể đọc được bằng máy.
  2. Siêu dữ liệu phong phú - roamr cung cấp một tập hợp siêu dữ liệu phong phú, chẳng hạn như thông tin yêu cầu và phản hồi, có thể được sử dụng để chẩn đoán sự cố và cải thiện chất lượng tổng thể của nhật ký của bạn.
  3. Con người có thể đọc được - mặc dù định dạng có cấu trúc của nó, các bản ghi roar cũng được thiết kế để con người có thể đọc được, giúp bạn dễ dàng hiểu ngữ cảnh và nội dung của các bản ghi của mình.
  4. Dễ sử dụng - thư viện cung cấp API đơn giản và trực quan để ghi nhật ký, không phức tạp không cần thiết.
  5. Có thể tùy chỉnh - thư viện buzzer cho phép bạn tùy chỉnh giao diện và nội dung nhật ký của mình, bao gồm các tùy chọn để tùy chỉnh cấp độ nhật ký, luồng và siêu dữ liệu.

Cài đặt Roarr

Đầu tiên, cài đặt roamr bằng npm:

 npm install roarr

Sử dụng Roarr

Tiếp theo, nhập tiếng gầm vào mã của bạn và tạo một trình ghi nhật ký:

 const Roarr = require('roarr').default; const logger = new Roarr({ context: { service: 'my-service' } });

Ghi nhật ký thông điệp bằng phương thức log :

 logger.info('Hello, world!');

Theo mặc định, nhật ký tiếng gầm sẽ được xuất ra bàn điều khiển. Bạn có thể tùy chỉnh đầu ra nhật ký bằng cách chỉ định một luồng khác, chẳng hạn như một tệp, sử dụng tùy chọn stream :

 const Roarr = require('roarr').default; const fs = require('fs'); const logger = new Roarr({ context: { service: 'my-service' }, stream: fs.createWriteStream('./my-service.log') });

Đây chỉ là một ví dụ cơ bản về cách sử dụng tiếng gầm. Có nhiều tùy chọn và tính năng hơn có sẵn, vì vậy hãy nhớ tham khảo tài liệu chính thức về gầm để biết thêm thông tin.

#9. người theo dõi

Lợi ích của người theo dõi

Tracer là một thư viện ghi nhật ký mã nguồn mở dành cho các ứng dụng Node.js, được phát triển bởi cộng đồng Node.js. Nó được thiết kế để cung cấp một cách hiệu quả và linh hoạt để ghi nhật ký thông báo và gỡ lỗi thông tin trong các ứng dụng Node.js. Tracer đã được duy trì và phát triển tích cực bởi một nhóm tình nguyện viên và sẵn có cho bất kỳ ai sử dụng và đóng góp trên Github. Đây là một số tính năng làm cho nó trở thành một thư viện ghi nhật ký độc đáo:


  1. Ghi nhật ký không đồng bộ - Tracer sử dụng ghi nhật ký không đồng bộ, nghĩa là các nhật ký không cản trở việc thực thi chương trình.
  2. Ghi nhật ký có cấu trúc - Tracer cung cấp ghi nhật ký có cấu trúc, nghĩa là các nhật ký được sắp xếp thành các cặp khóa-giá trị, giúp dễ dàng tìm kiếm, phân tích và trực quan hóa dữ liệu nhật ký.
  3. Đầu ra có thể tùy chỉnh - Tracer cung cấp định dạng đầu ra có thể tùy chỉnh, cho phép nhà phát triển chọn định dạng và đích cho nhật ký của họ, bao gồm bảng điều khiển, tệp hoặc các dịch vụ dựa trên đám mây như AWS CloudWatch.
  4. Ngữ cảnh ghi nhật ký phong phú - Tracer cung cấp ngữ cảnh ghi nhật ký phong phú, bao gồm khả năng đính kèm siêu dữ liệu như ID yêu cầu, ID người dùng và thông tin khác vào nhật ký.
  5. Hỗ trợ phần mềm trung gian - Tracer cung cấp hỗ trợ phần mềm trung gian, cho phép các nhà phát triển dễ dàng thêm nhật ký vào ứng dụng Express.js hoặc Koa.js của họ.

Cài đặt Tracer

Tracer có thể được cài đặt bằng Trình quản lý gói nút (npm). Dưới đây là các bước để cài đặt Tracer:


  1. Mở thiết bị đầu cuối hoặc dấu nhắc lệnh của bạn
  2. Thay đổi thư mục hiện tại của bạn thành thư mục dự án Node.js của bạn
  3. Chạy lệnh sau để cài đặt Tracer:


 npm install tracer


Điều này sẽ cài đặt Tracer như một phần phụ thuộc trong dự án của bạn. Sau đó, bạn có thể yêu cầu nó trong mã của mình và bắt đầu sử dụng nó để ghi nhật ký tin nhắn.

Sử dụng Tracer

Đây là một ví dụ về cách sử dụng Tracer trong mã của bạn:


 const tracer = require('tracer'); const logger = tracer.console(); logger.info('Starting the application...');


Trong ví dụ này, trước tiên chúng tôi yêu cầu thư viện Tracer, sau đó tạo bộ ghi bảng điều khiển bằng phương pháp tracer.console() . Cuối cùng, chúng tôi ghi lại một thông báo thông tin bằng cách sử dụng phương thức info trên đối tượng logger.


Đây là một ví dụ khác về việc sử dụng Tracer:

 const tracer = require('tracer'); const logger = tracer.dailyfile({root: './logs', maxLogFiles: 10}); logger.error('An error has occurred:', new Error('Something went wrong'));


Trong ví dụ này, chúng tôi đang sử dụng phương pháp tracer.dailyfile để tạo một trình ghi tệp ghi nhật ký vào một tệp luân phiên hàng ngày. Tùy chọn root chỉ định thư mục nơi các tệp nhật ký sẽ được lưu trữ và tùy chọn maxLogFiles giới hạn số lượng tệp nhật ký sẽ được lưu giữ.


Cuối cùng, chúng tôi ghi lại một thông báo lỗi bằng cách sử dụng phương thức error trên đối tượng logger, cùng với một đối tượng lỗi, cung cấp thêm thông tin về lỗi đã xảy ra.

#10. tín hiệu

Lợi ích tín hiệu

Trang Github của nó tự hào là “có thể hack và có thể định cấu hình cho lõi”, và đó là một phần quan trọng khiến Signale trở thành một thư viện ghi nhật ký được yêu thích trong cộng đồng Node.js. Thư viện được tạo ra như một giải pháp cho những khó khăn mà các nhà phát triển gặp phải khi cố ghi nhật ký thông báo trong ứng dụng Node.js, chẳng hạn như nhật ký lộn xộn và khó đọc. Đây là những gì làm cho nó nổi bật so với gói:


  1. Đầu ra nhật ký có thể tùy chỉnh - Signale cung cấp nhiều loại đầu ra nhật ký có thể tùy chỉnh, cho phép các nhà phát triển chọn đầu ra phù hợp nhất với nhu cầu của họ, từ đầu ra bảng điều khiển đơn giản đến các đầu ra nâng cao hơn như JSON và Logfmt.
  2. API trực quan - Signale có một API đơn giản và trực quan, giúp các nhà phát triển dễ dàng sử dụng và hiểu, ngay cả đối với những người mới ghi nhật ký.
  3. Đầu ra theo kiểu - Signale cung cấp các đầu ra theo kiểu, làm cho nhật ký dễ đọc hơn và hấp dẫn trực quan hơn, giúp dễ dàng xác định nhanh các thông điệp nhật ký quan trọng.
  4. Ngữ cảnh nhật ký phong phú - Signale cung cấp ngữ cảnh nhật ký phong phú, chẳng hạn như dấu thời gian và cấp độ nhật ký, giúp phân tích và hiểu nhật ký dễ dàng hơn.
  5. Cộng đồng tích cực - Signale có một cộng đồng lớn và tích cực gồm các nhà phát triển và cộng tác viên, đảm bảo rằng thư viện được duy trì tốt và cập nhật các công nghệ mới nhất cũng như các phương pháp hay nhất.

Cài đặt tín hiệu

Để cài đặt Signale, bạn có thể sử dụng npm, trình quản lý gói Node.js, bằng cách chạy lệnh sau trong thiết bị đầu cuối của mình:

 npm install signale


Ngoài ra, bạn cũng có thể sử dụng yarn để cài đặt Signale bằng cách chạy lệnh sau trong thiết bị đầu cuối của mình:

 yarn add signale


Sau khi cài đặt, bạn có thể nhập Signale vào ứng dụng Node.js của mình và bắt đầu sử dụng nó để ghi nhật ký thông báo và thông tin gỡ lỗi.

Sử dụng tín hiệu

Đây là một ví dụ về việc nhập Signale vào ứng dụng Node.js của bạn và sử dụng nó để ghi nhật ký tin nhắn:


 const signale = require('signale'); // Log an info message signale.info('Starting up the server'); // Log a success message signale.success('Server started successfully'); // Log a warning message signale.warn('Low memory warning'); // Log an error message signale.error(new Error('An error occurred while processing data'));


Trong ví dụ này, chúng tôi nhập Signale vào ứng dụng Node.js của mình bằng hàm require . Sau đó, chúng tôi sử dụng các phương thức ghi nhật ký khác nhau do Signale cung cấp, chẳng hạn như info , success , warnerror , để ghi lại các loại thông báo khác nhau. Mỗi phương pháp này có một biểu tượng và màu sắc riêng biệt, giúp dễ dàng nhanh chóng xác định loại thông điệp tường trình.


Bạn có thể tìm thêm thông tin về cách sử dụng Signale, bao gồm các phương pháp ghi nhật ký bổ sung và tùy chọn tùy chỉnh, trong tài liệu về Signale .


Tối ưu hóa quy trình gỡ lỗi của bạn với Thư viện nhật ký Node.js

Bạn đang tìm kiếm một phương pháp nhanh chóng và hiệu quả để gỡ lỗi các ứng dụng Node.js của mình? Kiểm tra một hoặc nhiều thư viện được đề cập trong bài viết này, mỗi thư viện đều là một lựa chọn tuyệt vời. Tuy nhiên, Pino là thư viện ghi nhật ký cá nhân mà chúng tôi lựa chọn cho những gì đáng giá 😉


Các thư viện ghi nhật ký này đã được chứng minh là rất quan trọng khi gỡ lỗi các ứng dụng Node.js cả trong môi trường thử nghiệm/phát triển và trong sản xuất.


Ngoài ra, bằng cách tích hợp chúng với một giải pháp giám sát như PlayerZero, bạn có thể hiểu rõ hơn nữa về hiệu suất của các ứng dụng Node.js của mình.


Đặt bản Demo để tìm hiểu thêm về cách PlayerZero có thể giúp bạn tối ưu hóa hiệu suất ứng dụng phụ trợ của mình ngay hôm nay!


Cũng được xuất bản ở đây .