温馨提示×

Debian Nodejs日志如何配置

小樊
43
2026-07-27 13:27:02
栏目: 编程语言

在 Debian 上配置 Node.js 日志,通常可以从 应用层(Node.js 代码)系统层(systemd / logrotate) 两个维度来做。下面按常见实战场景给你一个完整说明。


一、Node.js 应用层日志配置(最常见)

1️⃣ 使用日志库(推荐)

Node.js 不建议直接用 console.log 上生产,推荐使用成熟日志库。

常用日志库

特点
winston 最常用,支持多 transport
pino 性能最好,JSON 日志
bunyan JSON 日志,可读性好

2️⃣ 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.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()
  }));
}

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

✅ 日志文件默认在 项目目录
✅ 可区分 error / info / warn


3️⃣ 指定日志目录(Debian 规范)

Debian 建议日志放在:

/var/log/myapp/

创建目录

sudo mkdir -p /var/log/myapp
sudo chown node:node /var/log/myapp   # 或你的运行用户

修改 winston 配置

new winston.transports.File({
  filename: '/var/log/myapp/combined.log'
})

二、Systemd 服务日志(Node.js 作为服务运行)

1️⃣ 使用 systemd 管理 Node.js

示例 service 文件

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

[Service]
Type=simple
User=node
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node index.js
Restart=always
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

2️⃣ 查看 systemd 日志

journalctl -u myapp -f

✅ 即使 Node.js 不写文件,也能看到 stdout / stderr
✅ 适合容器、云服务器


3️⃣ 限制日志大小(防止磁盘爆满)

[Service]
StandardOutput=journal
StandardError=journal

或:

sudo journalctl --vacuum-size=100M

三、使用 logrotate 管理日志文件

如果你 自己写日志文件(如 winston),一定要配置 logrotate

1️⃣ 创建 logrotate 配置

sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  create 0640 node node
  copytruncate
}

✅ 每天轮转
✅ 保留 7 天
✅ 自动压缩


四、Docker / PM2 场景(补充)

✅ PM2(Debian 常用)

pm2 logs
pm2 flush

PM2 默认日志位置:

~/.pm2/logs/

可配置:

pm2 start app.js --log /var/log/myapp/app.log

五、推荐生产配置总结 ✅

层级 推荐方案
应用日志 winston + /var/log/myapp
服务管理 systemd
系统查看 journalctl
日志轮转 logrotate
开发调试 console

如果你愿意,我可以:

  • ✅ 给你 完整 Debian + Node.js + systemd + winston 示例
  • ✅ 针对 Express / NestJS / Koa 单独说明
  • ✅ 帮你排查 日志不写 / 权限问题

你现在用的是 哪种方式运行 Node.js

0