Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Ghi log trong Node.js

Mô tả

Ghi log là một phần rất thiết yếu trong bất kỳ ứng dụng nào, चाहे nó được làm trong Node.js hay bất kỳ ngôn ngữ lập trình nào khác. Ghi log giúp chúng ta phát hiện các hành vi bất thường của ứng dụng cùng với các lỗi và ngoại lệ thời gian thực. Người ta chắc chắn nên đặt các log hợp lý trong ứng dụng của mình. Những log này giúp người dùng xác định bất kỳ lỗi nào và giải quyết nó ngay lập tức.

Hiện có 5 mức độ log (log levels) khác nhau có sẵn cho người dùng. Các mức độ log này được dùng để định nghĩa các loại log khác nhau và giúp người dùng xác định các tình huống khác nhau. Các mức độ log phải được cấu hình cẩn thận để tận dụng tối đa chúng:

  • error

  • warn

  • info

  • verbose

  • debug

Middleware

Bạn có thể đặt middleware này vào pipeline yêu cầu (request pipeline) để có thể trực tiếp sử dụng sức mạnh của module debug để in log. Lợi thế lớn nhất của module debug là hầu như tất cả các module đều dùng debug để in log. Bạn có thể dùng module debug để in log và lỗi.

Middleware này chủ yếu dùng như một pipeline trung gian – bạn có thể truyền log vào pipeline này và nó sẽ được in vào file log. Yêu cầu và phản hồi cũng được truyền qua middleware này cho mục đích ghi log. Nó rất hữu ích trong ứng dụng Express. Việc thiết lập middleware rất dễ dàng và có thể làm trong bất kỳ framework nào đang dùng.

Cấu hình file cho middleware

application

const app = express(); const logMiddleware = require('my-logging-middleware'); app.use(logMiddleware);

router

const router = express.Router(); const routeLoggingMiddleware = require('my-route-logging-middleware'); router.use(routeLoggingMiddleware);

errors

const app = express(); const errorLoggingMiddleware = require('my-error-logging-middleware'); app.use(errorLoggingMiddleware);

Gói Winston

Bạn cũng có thể dùng gói winston cho mục đích ghi log. Nó cũng cung cấp các mức độ log, truy vấn cũng như profiler.

application

const app = express(); const winstonPackage = require('winston'); const consoleTransport = new winstonPackage.transports.Console(); const myWinstonOptions = { transports: [consoleTransport] }; const logger = new winstonPackage.createLogger(myWinstonOptions); function logRequest(req, res, next) { logger.info(req.url); next(); } app.use(logRequest); function logError(err, req, res, next) { logger.error(err); next(); } app.use(logError);