温馨提示×

Debian如何配置Nodejs日志

小樊
45
2026-07-13 03:48:09
栏目: 编程语言

在 Debian 上配置 Node.js 日志,通常分为 系统层面应用层面 两部分。下面按常见场景给你一个完整说明,从基础到生产环境。


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

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

Node.js 本身没有内置日志系统,生产环境建议使用日志库:

常用日志库

  • winston(最常用)
  • pino(高性能)
  • bunyan(结构化)

示例: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' }),
    new winston.transports.Console()
  ]
});

module.exports = logger;

使用:

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

✅ 优点:

  • 自动按级别记录
  • 可输出到文件 / 控制台
  • 易与系统日志对接

二、Debian 系统级日志(journald / rsyslog)

2️⃣ 使用 systemd 管理服务日志(推荐生产)

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

示例 service 文件

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

[Service]
Type=simple
User=node
WorkingDirectory=/var/www/nodeapp
ExecStart=/usr/bin/node index.js
Restart=always
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

查看日志

journalctl -u nodeapp -f

✅ 优点:

  • 自动日志轮转
  • 与系统日志统一管理
  • 不需要额外配置 logrotate

三、日志文件 + logrotate(传统方式)

如果你直接写文件日志(如 logs/app.log):

1️⃣ 日志目录

mkdir -p /var/log/nodeapp
chown node:node /var/log/nodeapp

2️⃣ logrotate 配置

sudo nano /etc/logrotate.d/nodeapp
/var/log/nodeapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

测试:

logrotate -d /etc/logrotate.d/nodeapp

四、PM2 管理 Node.js 日志(非常常见)

如果你用 PM2

npm install -g pm2
pm2 start index.js --name app

查看日志

pm2 logs
pm2 logs app

日志路径

~/.pm2/logs/

配置日志大小限制

pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M

✅ 优点:

  • 自动重启
  • 自动日志管理
  • 非常适合 Debian 服务器

五、日志级别建议(生产环境)

环境 推荐级别
开发 debug
测试 info
生产 warn / error
const level = process.env.NODE_ENV === 'production' ? 'warn' : 'debug';

六、推荐组合(最佳实践)

生产环境推荐方案

  • Node.js + winston / pino
  • 使用 systemdPM2
  • 日志输出到 journald 或 文件 + logrotate
  • 不记录敏感信息(密码、token)

七、常见错误

❌ 直接 console.log 到生产
❌ 日志文件无限增长
❌ 忘记设置日志权限


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

  • 你是 裸机 / Docker / 云服务器
  • 是否使用 PM2 / systemd
  • 想记录到 文件 / journal / 远程日志

我可以给你一套 完全定制的 Debian + Node.js 日志方案

0