温馨提示×

nodejs日志ubuntu怎配置

小樊
33
2026-09-12 10:33:33
栏目: 编程语言

在 Ubuntu 上配置 Node.js 日志,一般分 应用层日志系统层日志(systemd) 两部分。下面按常见场景给你讲。


一、Node.js 应用本身写日志(推荐)

1. 使用日志库(不要直接用 console.log)

常用库:

  • winston
  • pino(性能最好)
  • log4js

示例(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' })
  ]
});

logger.info('服务启动');

日志文件一般放:

/var/log/myapp/

记得给目录权限:

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

二、用 systemd 管理 Node.js(Ubuntu 推荐)

1. 创建 service 文件

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

内容示例:

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

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

# 日志由 systemd 管理
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

三、查看 Node.js 日志(Ubuntu)

1. 用 journalctl(最常用)

journalctl -u myapp
journalctl -u myapp -f      # 实时
journalctl -u myapp --since "1 hour ago"

2. 查看文件日志

tail -f /var/log/myapp/combined.log

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

使用 logrotate

sudo nano /etc/logrotate.d/myapp

示例:

/var/log/myapp/*.log {
  daily
  missingok
  rotate 14
  compress
  notifempty
  copytruncate
}

测试:

sudo logrotate -d /etc/logrotate.d/myapp

五、生产环境推荐方案

✅ Node.js + Winston/Pino
✅ systemd 管理进程
✅ journalctl 查日志
✅ logrotate 做切割


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

  • 你是 开发环境还是生产环境
  • 用的是 PM2 / Docker / 裸 node
  • 想看 控制台日志还是文件日志

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

0