温馨提示×

Debian下Nodejs日志怎么配置

小樊
46
2026-10-13 00:15:43
栏目: 编程语言

在 Debian 下配置 Node.js 日志,通常分为**系统层面(进程管理)和应用层面(代码/框架)**两部分。下面按常见场景给你一个清晰、可落地的说明。


一、应用层面:Node.js 日志怎么写

1. 最基础方式(不推荐生产)

console.log('info');
console.error('error');

默认输出到 stdout / stderr,由启动方式决定去向。


2. 使用日志库(推荐)

常用库

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

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: '/var/log/nodejs/app.log' }),
    new winston.transports.Console()
  ]
});

logger.info('server started');

二、Debian 系统层面:日志放在哪、怎么管

1. 日志文件位置(推荐)

/var/log/nodejs/

创建目录:

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

2. 使用 systemd(Debian 推荐方式)

编写 service 文件

sudo nano /etc/systemd/system/nodeapp.service

示例:

[Unit]
Description=Node.js App
After=network.target

[Service]
User=youruser
WorkingDirectory=/opt/nodeapp
ExecStart=/usr/bin/node app.js
Environment=NODE_ENV=production
StandardOutput=append:/var/log/nodejs/app.out.log
StandardError=append:/var/log/nodejs/app.err.log
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用服务

sudo systemctl daemon-reexec
sudo systemctl enable nodeapp
sudo systemctl start nodeapp

查看日志

journalctl -u nodeapp -f
# 或
tail -f /var/log/nodejs/app.out.log

三、日志轮转(非常重要)

Debian 自带 logrotate

配置示例

sudo nano /etc/logrotate.d/nodejs
/var/log/nodejs/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    copytruncate
}

四、生产环境建议

✅ 使用 pm2 或 systemd 管理进程
✅ 日志分级(info / warn / error)
✅ 不记录敏感信息
✅ 日志文件权限最小化
✅ 配合 logrotate


五、如果你用 PM2(备选)

pm2 start app.js
pm2 logs
pm2 install pm2-logrotate

日志默认在:

~/.pm2/logs/

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

  • 你是 原生 Node / Express / NestJS
  • 是否 生产环境
  • 是否用 Docker

我可以直接给你一套完整配置。

0 踩