温馨提示×

Ubuntu Nodejs日志如何配置

小樊
45
2026-07-21 19:17:46
栏目: 编程语言

在 Ubuntu 上配置 Node.js 日志,通常分为 应用层日志系统层日志 两部分。下面按常见场景给你一个完整、实用的说明。


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

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

Node.js 不建议直接用 console.log 上生产

常用日志库

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

✅ 示例:使用 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: 'logs/error.log', level: 'error' }),
    new winston.transports.File({ filename: 'logs/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('数据库连接失败');

✅ 示例:按日期切分日志(生产必备)

npm install winston-daily-rotate-file
const { createLogger, transports, format } = 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],
});

二、Node.js 进程日志(PM2)

如果你用 PM2 管理 Node.js 服务(强烈推荐):

1️⃣ PM2 自带日志

pm2 logs
pm2 logs app-name

日志默认位置:

~/.pm2/logs/

2️⃣ PM2 日志配置

pm2 start app.js --name my-api \
  --log logs/pm2.log \
  --output logs/out.log \
  --error logs/error.log \
  --time

ecosystem.config.js

module.exports = {
  apps: [{
    name: 'api',
    script: 'app.js',
    error_file: 'logs/error.log',
    out_file: 'logs/out.log',
    log_date_format: 'YYYY-MM-DD HH:mm:ss',
  }]
};

三、Ubuntu 系统日志(systemd)

如果你用 systemd 启动 Node.js:

1️⃣ 查看日志

journalctl -u your-service-name -f

2️⃣ Node.js 输出到 systemd

只要 console.log / console.error 输出到 stdout/stderr 即可。


四、Nginx 反向代理日志(常见)

如果你用 Nginx:

/var/log/nginx/access.log
/var/log/nginx/error.log

查看:

tail -f /var/log/nginx/access.log

五、生产环境日志最佳实践 ✅

✅ 不要打印敏感信息(密码、token)
✅ 使用 JSON 格式(方便 ELK / Loki)
✅ 日志分级(info / warn / error)
✅ 日志按天切分 + 自动清理
✅ 错误日志单独存放


六、推荐组合(生产)

层级 工具
Node.js 应用 winston + daily-rotate
进程管理 PM2
系统服务 systemd
反向代理 Nginx
日志分析 ELK / Grafana Loki

如果你愿意,我可以:

  • ✅ 帮你写 完整生产级日志配置
  • ✅ 根据你用的 PM2 / systemd / Docker 定制方案
  • ✅ 配置 日志自动清理 & 报警

你现在是用 PM2、systemd 还是 Docker?

0