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.
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.
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:
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 ký
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ố.
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, 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');
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
, ERROR
và FATAL
. 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.
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
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à:
Để 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
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.
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
, warn
và error
mới được xuất ra.
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:
Để 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ó.
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.
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:
Bắt đầu bằng cách cài đặt gói morgan bằng npm:
npm install 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:
tiny
có một đầu ra rất nhỏ.short
bao gồm thời gian phản hồi và viết tắt nhật ký theo mặc định.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ểncommon
cũng sử dụng đầu ra nhật ký kết hợp của Apache.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'));
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:
Để thiết lập loglevel, trước tiên bạn cần cài đặt nó bằng npm:
npm install 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ị.
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:
Để 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.
Để 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.
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:
Để 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.
Đâ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
, warn
và error
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
, warn
và error
.
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
.
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:
Đầu tiên, cài đặt roamr bằng npm:
npm install 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.
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 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:
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.
Đâ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.
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:
Để 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.
Đâ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
, warn
và error
, để 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 .
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.
Cũng được xuất bản ở đây .