溫馨提示×

如何自定義Node.js日志格式以便于分析

小樊
42
2025-04-20 12:08:48
欄目: 編程語言

自定義 Node.js 日志格式可以幫助你更好地分析和監控應用程序的運行狀態。以下是幾種常見的方法來自定義 Node.js 日志格式:

1. 使用 console.log 自定義格式

雖然 console.log 本身不支持復雜的格式化,但你可以通過模板字符串來簡單地自定義輸出格式:

const timestamp = new Date().toISOString();
const message = 'User logged in';
const userId = 123;

console.log(`${timestamp} [INFO] ${message} - User ID: ${userId}`);

2. 使用第三方日志庫

有許多成熟的第三方日志庫提供了豐富的功能來自定義日志格式,例如 winstonpino。

使用 winston

winston 是一個非常流行的日志庫,支持多種傳輸方式和自定義格式。

首先,安裝 winston

npm install winston

然后,配置 winston

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    winston.format.printf(({ timestamp, level, message }) => {
      return `${timestamp} [${level.toUpperCase()}] ${message}`;
    })
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('User logged in', { userId: 123 });

使用 pino

pino 是一個高性能的日志庫,支持結構化日志和自定義格式。

首先,安裝 pino

npm install pino

然后,配置 pino

const pino = require('pino');
const prettyPrint = require('pino-pretty');

const logger = pino({
  level: 'info',
  transport: {
    target: 'pino-pretty',
    options: {
      colorize: true,
      translateTime: 'SYS:standard'
    }
  }
});

logger.info('User logged in', { userId: 123 });

3. 使用 morgan 進行 HTTP 請求日志

如果你需要記錄 HTTP 請求日志,可以使用 morgan 中間件。

首先,安裝 morgan

npm install morgan

然后,在 Express 應用中使用 morgan

const express = require('express');
const morgan = require('morgan');

const app = express();

app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

你可以通過自定義 morgan 的格式來改變日志輸出:

const morgan = require('morgan');
const customFormat = ':method :url :status :res[content-length] - :response-time ms :user-agent';

app.use(morgan(customFormat));

總結

自定義 Node.js 日志格式可以通過多種方式實現,包括使用 console.log、第三方日志庫如 winstonpino,以及 HTTP 請求日志庫如 morgan。選擇適合你項目需求的方法,并根據需要進行配置和擴展。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女