溫馨提示×

Node.js日志輪轉配置方法

小樊
43
2025-04-30 14:23:14
欄目: 編程語言

在Node.js應用程序中,日志輪轉是一種常見的做法,可以幫助管理日志文件的大小和數量,避免日志文件過大或過多導致磁盤空間不足。以下是幾種常見的日志輪轉配置方法:

1. 使用 winstonwinston-daily-rotate-file

winston 是一個流行的日志庫,結合 winston-daily-rotate-file 可以實現日志的每日輪轉。

首先,安裝所需的包:

npm install winston winston-daily-rotate-file

然后,配置 winston

const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({
  filename: 'application-%DATE%.log',
  datePattern: 'YYYY-MM-DD-HH',
  zippedArchive: true,
  maxSize: '20m',
  maxFiles: '14d'
});

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

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

2. 使用 morganmorgan-body

morgan 是一個HTTP請求日志中間件,結合 morgan-body 可以實現請求日志的輪轉。

首先,安裝所需的包:

npm install morgan morgan-body

然后,配置 morgan

const express = require('express');
const morgan = require('morgan');
const morganBody = require('morgan-body');
const fs = require('fs');
const path = require('path');

const app = express();

const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' });
const errorLogStream = fs.createWriteStream(path.join(__dirname, 'error.log'), { flags: 'a' });

app.use(morgan('combined', { stream: accessLogStream }));
app.use(morganBody());

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

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

3. 使用 pinopino-rotate

pino 是一個高性能的日志庫,結合 pino-rotate 可以實現日志的輪轉。

首先,安裝所需的包:

npm install pino pino-rotate

然后,配置 pino

const pino = require('pino');
const rotate = require('pino-rotate');

const logger = pino({
  level: 'info',
  transport: {
    target: 'pino-rotate',
    options: {
      period: '1d',
      path: 'application.log',
      maxsize: '10m',
      maxfiles: '7'
    }
  }
});

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

4. 使用 logrotate 工具

如果你在Linux系統上運行Node.js應用程序,可以使用 logrotate 工具來管理日志文件。

首先,創建一個 logrotate 配置文件:

sudo nano /etc/logrotate.d/myapp

然后,添加以下內容:

/path/to/your/application.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 640 root adm
}

最后,確保 logrotate 定期運行:

sudo systemctl enable logrotate
sudo systemctl start logrotate

通過以上幾種方法,你可以根據具體需求選擇合適的日志輪轉配置方式。

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