在 Debian 上 Node.js 本身并没有“固定”的日志格式,日志格式主要取决于 你用的框架、日志库或运行方式。下面把常见情况给你梳理一下。
如果你直接用:
console.log('hello');
console.error('error');
hello
error
console.log → stdoutconsole.error → stderrWinston 默认格式是 JSON(在 Debian / Linux 上尤其常见)
const winston = require('winston');
const logger = winston.createLogger({
transports: [new winston.transports.Console()]
});
logger.info('server started');
{"level":"info","message":"server started","timestamp":"2026-01-15T10:00:00.000Z"}
✅ Debian 服务器上非常常见 ✅ 方便被 systemd / journald / ELK 解析
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 服务:
# /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:
pm2 start app.js
2026-01-15T10:00:00: app | server started
~/.pm2/logs/
app.use(morgan('combined'));
::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。
如果你能告诉我:
我可以直接给你一份 标准生产级日志配置。