温馨提示×

linux nodejs日志怎么配置

小樊
45
2026-10-05 12:49:15
栏目: 编程语言

在 Linux 上配置 Node.js 日志,通常可以从应用层日志库配置、系统/进程管理(PM2 / systemd)、**日志轮转(logrotate)**几个方面来做。下面给你一套常见且实用的方案。


一、Node.js 应用层日志配置(推荐用日志库)

1. 使用 winston(最常用)

npm install winston

示例配置(同时输出到控制台和文件):

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({
      filename: '/var/log/nodejs/app.log'
    }),
    new winston.transports.File({
      filename: '/var/log/nodejs/error.log',
      level: 'error'
    })
  ]
});

logger.info('服务启动');
logger.error('出错了');

2. 使用 pino(性能更好)

npm install pino
const pino = require('pino');
const logger = pino({ level: 'info' });

logger.info('hello');

二、Linux 日志目录权限(很重要)

一般日志放:

/var/log/nodejs/

创建并赋权:

sudo mkdir -p /var/log/nodejs
sudo chown -R youruser:youruser /var/log/nodejs

三、使用 PM2 管理 Node.js 日志(非常推荐)

1. 安装 PM2

npm install -g pm2

2. 启动项目

pm2 start app.js --name myapp

PM2 默认日志位置:

~/.pm2/logs/myapp-out.log
~/.pm2/logs/myapp-error.log

3. 自定义日志路径

pm2 start app.js \
  --name myapp \
  --log /var/log/nodejs/myapp.log \
  --error /var/log/nodejs/myapp-error.log \
  --output /var/log/nodejs/myapp-out.log

四、日志轮转(防止日志爆盘)

方案 1:PM2 + pm2-logrotate

pm2 install pm2-logrotate

常用配置:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

方案 2:Linux logrotate(推荐生产环境)

新建配置文件:

sudo vim /etc/logrotate.d/nodejs

内容示例:

/var/log/nodejs/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    copytruncate
}

测试:

sudo logrotate -d /etc/logrotate.d/nodejs

五、systemd 方式(不用 PM2 时)

如果你用 systemd 启动 Node.js:

[Unit]
Description=Node.js App

[Service]
ExecStart=/usr/bin/node /opt/app/app.js
WorkingDirectory=/opt/app
User=node
StandardOutput=append:/var/log/nodejs/app.log
StandardError=append:/var/log/nodejs/error.log
Restart=always

[Install]
WantedBy=multi-user.target

六、生产环境推荐组合 ✅

✅ Node.js + winston/pino
✅ PM2 管理进程
✅ pm2-logrotate 或 logrotate
✅ 日志统一放 /var/log/nodejs


如果你愿意,可以告诉我:

  • 用的是 PM2 / systemd / Docker
  • 是 开发环境还是生产环境
  • 想用 winston / pino / 原生 console

我可以直接给你一套可复制的配置文件。

0 踩