溫馨提示×

Linux下Node.js日志輪轉策略

小樊
58
2025-05-04 15:13:17
欄目: 編程語言

在Linux下,Node.js應用程序的日志輪轉可以通過多種方式實現。以下是一些常見的方法:

1. 使用 logrotate 工具

logrotate 是一個非常強大的日志管理工具,可以自動輪轉、壓縮和刪除日志文件。

安裝 logrotate

大多數Linux發行版默認已經安裝了 logrotate,如果沒有,可以使用包管理器進行安裝:

sudo apt-get install logrotate  # Debian/Ubuntu
sudo yum install logrotate      # CentOS/RHEL

配置 logrotate

創建或編輯 /etc/logrotate.d/your_app 文件,添加以下內容:

/path/to/your/nodejs/app.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 root adm
}

解釋:

  • daily: 每天輪轉一次日志。
  • rotate 7: 保留7個輪轉日志文件。
  • compress: 壓縮舊的日志文件。
  • delaycompress: 延遲壓縮,直到下一次輪轉。
  • missingok: 如果日志文件丟失,不要報錯。
  • notifempty: 如果日志文件為空,不進行輪轉。
  • create 640 root adm: 創建新的日志文件,權限為640,屬主為root,屬組為adm。

2. 使用 pm2 管理Node.js應用

pm2 是一個流行的Node.js進程管理工具,它內置了日志管理功能,包括日志輪轉。

安裝 pm2

npm install pm2 -g

啟動應用并配置日志輪轉

pm2 start app.js --name your_app
pm2 set pm2:logrotate:max_size 10M
pm2 set pm2:logrotate:retain 7

解釋:

  • --name your_app: 為應用命名。
  • pm2:logrotate:max_size 10M: 當日志文件大小達到10MB時進行輪轉。
  • pm2:logrotate:retain 7: 保留7個輪轉日志文件。

3. 使用 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!');

解釋:

  • filename: 日志文件的基本名稱和日期模式。
  • datePattern: 日期模式,用于生成日志文件名。
  • zippedArchive: 是否壓縮舊的日志文件。
  • maxSize: 單個日志文件的最大大小。
  • maxFiles: 保留的日志文件數量。

通過以上方法,你可以在Linux下有效地管理Node.js應用程序的日志輪轉。選擇哪種方法取決于你的具體需求和應用場景。

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