温馨提示×

centos怎么配置nodejs日志

小樊
45
2026-07-08 06:46:04
栏目: 编程语言

在 CentOS 上配置 Node.js 日志,常见场景有 应用层日志(代码里打日志)系统层日志(进程 / 服务日志)。下面按实际使用方式给你一个完整说明。


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

1️⃣ 使用日志库(最常用)

✅ 使用 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/error.log', level: 'error' }),
    // 所有日志
    new winston.transports.File({ filename: '/var/log/nodejs/combined.log' }),
    // 控制台
    new winston.transports.Console()
  ]
});

logger.info('服务启动');
logger.error('错误信息');

创建日志目录

sudo mkdir -p /var/log/nodejs
sudo chown -R $(whoami):$(whoami) /var/log/nodejs

2️⃣ 使用 pm2 管理日志(强烈推荐生产环境)

安装 pm2

npm install -g pm2

启动应用

pm2 start app.js --name my-node-app

查看日志

pm2 logs
pm2 logs my-node-app

日志文件位置

~/.pm2/logs/

配置日志大小 & 自动切割

pm2 install pm2-logrotate

pm2-logrotate 常用配置:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

优点

  • 自动守护进程
  • 自动记录 stdout / stderr
  • 自带日志管理

二、CentOS 系统级日志(rsyslog / journalctl)

1️⃣ 使用 rsyslog

修改 Node.js 输出到 syslog

process.stdout.write('nodejs info message\n');
process.stderr.write('nodejs error message\n');

rsyslog 配置

sudo vi /etc/rsyslog.d/nodejs.conf

内容示例:

if $programname == 'node' then /var/log/nodejs/node.log
& stop

重启 rsyslog:

sudo systemctl restart rsyslog

2️⃣ 使用 systemd + journalctl

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

创建服务文件

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

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

[Install]
WantedBy=multi-user.target

启动

sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp

查看日志

journalctl -u nodeapp -f

三、Nginx 反向代理时的日志(常见)

proxy_set_header X-Real-IP $remote_addr;
access_log /var/log/nginx/node_access.log;
error_log /var/log/nginx/node_error.log;

四、生产环境推荐方案 ✅

场景 推荐方案
小项目 winston + 文件
中大型 pm2 + pm2-logrotate
系统服务 systemd + journalctl
云服务器 日志收集到 ELK / Loki

五、常见坑位

/var/log/nodejs 没权限
✅ 确保目录权限或 chown

❌ 日志无限增长
✅ 使用 pm2-logrotatewinston 按日期切割

❌ 日志中文乱码
✅ 设置 LANG=en_US.UTF-8


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

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ Node.js 启动方式(手动 / pm2 / docker)
  • ✅ 是否生产环境

我可以给你一套 完全贴合你环境的配置方案

0