温馨提示×

Nodejs日志在Debian如何设置

小樊
38
2026-07-13 04:14:08
栏目: 编程语言

在 Debian 上设置 Node.js 日志,常见做法分为 应用层日志系统层日志(systemd) 两部分。下面按常见场景一步步说明。


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

1️⃣ 使用日志库(最常用)

示例:使用 winston(最流行)

npm install winston
// logger.js
const winston = require('winston');

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

// 开发环境同时输出到控制台
if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: winston.format.simple()
  }));
}

module.exports = logger;

使用:

const logger = require('./logger');
logger.info('服务启动');
logger.error('发生错误');

✅ 优点:

  • 日志可分级(info / warn / error)
  • 可写入文件、按日期切割
  • 易与 Docker / PM2 配合

2️⃣ 日志按日期切割(生产推荐)

npm install winston-daily-rotate-file
const { createLogger, format, transports } = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');

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

const logger = createLogger({
  format: format.combine(format.timestamp(), format.json()),
  transports: [transport]
});

二、使用 PM2 管理 Node.js 日志(非常常见)

1️⃣ 安装 PM2

npm install -g pm2

2️⃣ 启动应用

pm2 start app.js --name my-app

3️⃣ 查看日志

pm2 logs
pm2 logs my-app

日志默认位置:

~/.pm2/logs/

4️⃣ 配置日志大小 & 自动切割

pm2 install pm2-logrotate

常用配置:

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

✅ 适合:

  • 生产环境
  • 不想自己写日志切割逻辑

三、systemd 日志(Debian 官方方式)

如果你用 systemd 管理 Node.js 服务

1️⃣ 创建 service 文件

# /etc/systemd/system/node-app.service
[Unit]
Description=Node.js App
After=network.target

[Service]
Type=simple
User=node
WorkingDirectory=/var/www/app
ExecStart=/usr/bin/node app.js
Restart=on-failure
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

2️⃣ 查看日志

journalctl -u node-app -f

✅ 优点:

  • 与系统日志统一
  • 自动轮转(由 systemd-journald 管理)

四、日志路径建议(Debian 规范)

类型 路径
应用日志 /var/log/node-app/
systemd 日志 journalctl
PM2 日志 ~/.pm2/logs/

确保权限正确:

sudo mkdir -p /var/log/node-app
sudo chown node:node /var/log/node-app

五、推荐组合(生产环境)

最佳实践

  • Node.js:winston + daily-rotate-file
  • 进程管理:PM2
  • 系统服务:systemd
  • 日志查看:journalctl / pm2 logs

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

  • 是否使用 PM2 / Docker / systemd
  • Node.js 版本
  • 应用规模(小项目 / 高并发)

我可以给你一套 完整可直接用的配置方案

0