温馨提示×

nodejs linux日志怎么配置

小樊
38
2026-10-26 02:36:54
栏目: 编程语言

在 Node.js 项目中,Linux 日志配置通常包含两部分:

  1. Node.js 应用内部日志(写文件 / 格式 / 级别)
  2. Linux 系统层面日志(systemd / logrotate)

下面按「最常见、最实用」的方式给你一个完整配置示例。


一、Node.js 应用日志配置(推荐 winston)

1. 安装

npm install winston

2. 基础日志配置(写文件 + 控制台)

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

module.exports = logger;

使用:

const logger = require('./logger');
logger.info('服务启动');
logger.error('出错了');

二、Linux 日志目录权限(很重要)

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

(如果是 root 运行可忽略)


三、使用 PM2(非常常见)

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

PM2 默认日志位置:

~/.pm2/logs/my-app-out.log
~/.pm2/logs/my-app-error.log

查看日志:

pm2 logs

四、systemd 方式(生产推荐)

1. 编写 service

sudo vim /etc/systemd/system/node-app.service
[Unit]
Description=Node.js App
After=network.target

[Service]
User=node
WorkingDirectory=/opt/node-app
ExecStart=/usr/bin/node app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app

[Install]
WantedBy=multi-user.target

2. 启动

sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app

3. 查看日志

journalctl -u node-app -f

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

logrotate 配置

sudo vim /etc/logrotate.d/node-app
/var/log/nodejs/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  copytruncate
}

测试:

sudo logrotate -d /etc/logrotate.d/node-app

六、常见推荐方案

场景 推荐
小项目 winston + 控制台
中大型 winston + PM2
生产服务 winston + systemd + logrotate
微服务 winston + ELK / Loki

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

  • 用的是 PM2 / Docker / 原生 node
  • 是否 生产环境
  • 是否要 JSON 日志 / 接入 ELK

我可以直接给你一套可直接用的配置。

0 踩