温馨提示×

Debian Nodejs日志格式是啥

小樊
45
2026-08-23 20:39:37
栏目: 编程语言

在 Debian 上 Node.js 本身并没有“固定”的日志格式,日志格式主要取决于 你用的框架、日志库或运行方式。下面把常见情况给你梳理一下。


一、Node.js 原生(console.log / console.error)

如果你直接用:

console.log('hello');
console.error('error');

日志特点

  • 纯文本
  • 无时间戳
  • 无日志级别(除非你自己加)

示例

hello
error

输出位置

  • console.log → stdout
  • console.error → stderr

二、使用日志库(最常见)

1️⃣ Winston(最常用)

Winston 默认格式是 JSON(在 Debian / Linux 上尤其常见)

const winston = require('winston');

const logger = winston.createLogger({
  transports: [new winston.transports.Console()]
});

logger.info('server started');

默认输出(JSON)

{"level":"info","message":"server started","timestamp":"2026-01-15T10:00:00.000Z"}

Debian 服务器上非常常见 ✅ 方便被 systemd / journald / ELK 解析


2️⃣ 自定义格式(常见生产配置)

format: winston.format.combine(
  winston.format.timestamp(),
  winston.format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
)

输出:

2026-01-15T10:00:00.000Z info: server started

三、systemd + Node.js(Debian 常见)

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

# /etc/systemd/system/nodeapp.service
[Service]
ExecStart=/usr/bin/node /var/www/app/index.js
StandardOutput=journal
StandardError=journal

日志查看

journalctl -u nodeapp

日志格式

systemd-journald 决定,例如:

Jan 15 10:00:00 nodeapp[1234]: server started

✅ 时间戳由 systemd 自动加
✅ Node.js 本身不控制格式


四、PM2(Debian 上很常见)

如果你用 PM2:

pm2 start app.js

PM2 日志格式

2026-01-15T10:00:00: app | server started

日志位置

~/.pm2/logs/

五、Express / Koa 的中间件日志

Morgan(Express)

app.use(morgan('combined'));

输出(Apache 风格)

::1 - - [15/Jan/2026:10:00:00 +0000] "GET / HTTP/1.1" 200 12

六、总结(快速对照表)

场景 日志格式
console.log 纯文本
Winston 默认 JSON
systemd 时间戳 + 内容
PM2 时间戳 + 进程名
Morgan Apache Combined
Docker + Node stdout / JSON

七、一句话总结

Debian 上 Node.js 没有统一日志格式,生产环境最常见的是:JSON(Winston)+ systemd / PM2。

如果你能告诉我:

  • 用的是 原生 Node / Express / NestJS
  • 是否 systemd / PM2 / Docker
  • 统一格式还是解析日志

我可以直接给你一份 标准生产级日志配置

0