温馨提示×

linux nodejs日志怎样报错

小樊
46
2026-10-26 02:39:17
栏目: 编程语言

在 Linux 下使用 Node.js 时,“日志怎样报错”通常可以从如何输出错误日志、如何记录错误、以及常见报错方式几个角度来理解。下面按常见场景说明。


一、最基本的报错方式(控制台)

1. 使用 console.error

console.error('发生错误:', err);
  • 默认输出到 stderr
  • 在 Linux 中通常会进入日志系统(取决于启动方式)

2. 抛出异常

throw new Error('出错了');
  • 程序会崩溃(未捕获时)
  • 错误信息会打印到终端或日志中

二、捕获错误并记录(推荐)

1. try…catch(同步代码)

try {
  JSON.parse('abc');
} catch (err) {
  console.error('解析失败:', err.message);
}

2. Promise 错误

somePromise()
  .catch(err => {
    console.error('Promise 错误:', err);
  });

3. async/await

async function run() {
  try {
    await doSomething();
  } catch (err) {
    console.error('异步错误:', err);
  }
}

三、全局错误捕获(防止崩溃)

1. 未捕获异常

process.on('uncaughtException', err => {
  console.error('未捕获异常:', err);
});

2. 未处理的 Promise 拒绝

process.on('unhandledRejection', err => {
  console.error('未处理的 Promise 拒绝:', err);
});

⚠️ 生产环境建议在捕获后优雅退出或写日志


四、写日志文件(Linux 常见做法)

1. 使用 fs 写文件

const fs = require('fs');

fs.appendFileSync('/var/log/node/app.log', `${new Date()} 错误: ${err}\n`);

2. 使用日志库(推荐)

  • winston
  • pino
  • log4js

示例(winston):

const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.File({ filename: '/var/log/node/app.log' })
  ]
});

logger.error('数据库连不上');

五、Linux 下查看 Node.js 报错日志

1. 前台运行

node app.js

2. 后台运行(重定向)

node app.js > /var/log/node/app.log 2>&1 &

3. 使用 systemd(推荐生产)

# /etc/systemd/system/node-app.service
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
StandardOutput=syslog
StandardError=syslog

查看日志:

journalctl -u node-app -f

六、常见 Node.js 报错示例

  • Error: Cannot find module
  • ECONNREFUSED
  • TypeError: xxx is not a function
  • SyntaxError: Unexpected token

如果你有具体场景(如 Express、PM2、Docker、systemd、生产环境),可以告诉我,我可以给你更针对性的日志报错方案。

0 踩