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: - 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. Cải thiện gỡ lỗi - 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. Khả năng hiển thị nâng cao - 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. Hiệu suất tốt hơn - 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. Ghi nhật ký tập trung - 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. Tùy chỉnh 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ý 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 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. FATAL FATAL Cấp độ nhật ERROR Mức nhật ký 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. ERROR Mức nhật ký WARN BÁO là cấp độ nhật ký ít nghiêm trọng hơn , tuy nhiên, không nên bỏ qua. Nhật ký 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. WARN ERROR WARN THÔNG TIN Cấp INFO Cấp độ nhật ký 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. INFO ký DEBUG LỖI cấp nhật Thông thường, cấp độ nhật ký cung cấp thông tin hữu ích trong quá trình gỡ lỗi. Nhật ký 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ý 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ố. DEBUG DEBUG DEBUG 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: - 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ả. Nhanh - 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. Nhật ký có cấu trúc - 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. Dễ mở rộng - 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. Chi phí thấp - 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. Vận chuyển Để 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 - 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: Nhập const pino = require('pino'); Sử dụng Pino - khởi tạo Pino bằng cách tạo một phiên bản nhật ký, ví dụ: Khởi tạo const logger = pino({ level: 'info' }); Tập lệnh này tạo nhật ký có cấp độ ghi nhật ký trở lên trên bảng điều khiển. INFO 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à , , và . Các thư có mức ghi dưới , chẳng hạn như , sẽ không được ghi. INFO WARN ERROR FATAL INFO DEBUG 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ủ. - bạn cũng có thể sử dụng phiên bản trình để ghi nhật ký các thông báo khác trong ứng dụng của mình. Ví dụ: Ghi nhật ký logger logger.warn('This is a warning message'); logger.error('This is an error message'); - 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. Đầu ra Cài đặt Pino đẹp Tính năng định dạng NDJSON 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ó: pino-pretty - 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: Bước 1 npm install pino-pretty - nhập 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: Bước 2 pino-pretty 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 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. pino-pretty Tìm hiểu thêm về gỡ lỗi với Pino trong của Cách gỡ lỗi Node.js bằng các công cụ tốt nhất có sẵn @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à: - 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. Linh hoạt - 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. Nhật ký có thể truy vấn - 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. Dễ sử dụng - 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. Tài liệu đầy đủ - 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. Hướng đến cộng đồng 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 vào bảng điều khiển với cấp độ nhật ký thông tin. Hello World 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 trên 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 được đặt thành , thì chỉ các mục nhật ký có mức độ nghiêm trọng của 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 , và mới được xuất ra. level logger level info info info warn error #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: - 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. Định dạng JSON - 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ý. Cấp độ ghi nhật ký linh hoạt - 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. Tuần tự hóa - 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. API dễ sử dụng - 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ể. Plugin và phương tiện vận chuyển 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 - ở đầu tệp JavaScript của bạn, hãy thêm dòng sau: Nhập Bunyan vào dự án của bạn const bunyan = require('bunyan'); - 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: Tạo phiên bản trình ghi nhật ký const logger = bunyan.createLogger({ name: 'my-app-name', level: 'info' }); Trong ví dụ này, 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. name - để 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: Ghi nhật ký logger.info('This is an info log message'); logger.warn('This is a warn log message'); logger.error('This is an error log message'); - 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. Chạy mã của bạ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: - 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ó. Dựa trên phần mềm trung gian - 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ọ. Có thể tùy chỉnh - 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. Dựa trên luồng - 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. Nhanh và nhẹ - 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. Ghi nhật ký yêu cầu HTTP 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: có một đầu ra rất nhỏ. tiny bao gồm thời gian phản hồi và viết tắt nhật ký theo mặc định. short 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 dev cũng sử dụng đầu ra nhật ký kết hợp của Apache. common sử dụng đầu ra nhật ký kết hợp Apache được tiêu chuẩn hóa. combined 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: - 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. Dấu chân mã tối thiểu - 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ã. Các mức ghi nhật ký động - 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. API đơn giản - 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. Khả năng tương thích với trình duyệt - 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. Khả năng tương thích đa nền tảng 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 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 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: ERROR, ERROR 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 và log.warn hoặc log.error mới được hiển thị. log.info #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: - 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. Tính linh hoạt trong cấu hì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ọ. Các ứng dụng tùy chỉnh - 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. Hỗ trợ ngữ cảnh nhật ký - 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. Cấu hình cấp độ nhật ký động - 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. Tích hợp với các công cụ khác 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: - 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. Nhẹ - 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. Tích hợp dễ dàng với npm - 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. Có thể tùy chỉnh - 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. Đa năng - 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. Sử dụng đơn giản 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 và gán nó cho một biến. Sau đó, chúng tôi đặt mức nhật ký thành , có nghĩa là các thông báo có mức nhật ký dài , , và 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 , , và . npmlog verbose verbose info warn error verbose info warn error Lưu ý rằng theo mặc định, npmlog ghi vào . Nếu bạn cần ghi vào , bạn có thể sử dụng thuộc tính . process.stderr process.stdout 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: - 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. Ghi nhật ký có cấu trúc - 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. Siêu dữ liệu phong phú - 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. Con người có thể đọc được - 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. Dễ sử dụng - 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ó thể tùy chỉnh 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: - 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. Ghi nhật ký không đồng bộ - 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ý. Ghi nhật ký có cấu trúc - 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. Đầu ra có thể tùy chỉnh - 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ý. Ngữ cảnh ghi nhật ký phong phú - 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ọ. Hỗ trợ phần mềm trung gian 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: Mở thiết bị đầu cuối hoặc dấu nhắc lệnh của bạn 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 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 . 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 trên đối tượng logger. tracer.console() info Đâ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 để 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 chỉ định thư mục nơi các tệp nhật ký sẽ được lưu trữ và tùy chọn giới hạn số lượng tệp nhật ký sẽ được lưu giữ. tracer.dailyfile root maxLogFiles 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 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. error #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: - 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. Đầu ra nhật ký có thể tùy chỉnh - 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ý. API trực quan - 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. Đầu ra theo kiểu - 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. Ngữ cảnh nhật ký phong phú - 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ộng đồng tích cực 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 . 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ư , , và , để 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. require info success warn error 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