在 Debian 上,Node.js 本身不自带系统级日志分级机制,日志分级通常取决于你使用的日志库、运行方式(systemd / pm2 / docker)以及syslog。下面按常见场景系统说明。
Node.js 通常通过日志库来分级,常见库及级别:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [new winston.transports.Console()]
});
logger.error('error');
logger.warn('warn');
logger.info('info');
logger.http('http');
logger.verbose('verbose');
logger.debug('debug');
logger.silly('silly');
级别(由高到低)
error > warn > info > http > verbose > debug > silly
设置 level: 'warn' 只输出 error / warn。
const pino = require('pino');
const logger = pino({ level: 'info' });
logger.info('info');
logger.debug('debug');
级别:
fatal > error > warn > info > debug > trace
log4js.configure({
level: 'INFO'
});
级别:
FATAL > ERROR > WARN > INFO > DEBUG > TRACE
console.error(); // stderr
console.warn(); // stdout
console.log(); // stdout
console.info();
⚠️ console 没有真正的“级别控制”,只能靠人为规范。
如果你是 systemd 启动 Node.js(推荐方式):
journalctl -u your-node-service
0 emerg
1 alert
2 crit
3 err
4 warning
5 notice
6 info
7 debug
journalctl -u your-node-service -p err
journalctl -u your-node-service -p warning
console.error → errconsole.warn → warningconsole.log → notice/infoPM2 默认区分:
~/.pm2/logs/app-error.log
~/.pm2/logs/app-out.log
可结合 Winston + PM2:
new winston.transports.File({ filename: 'error.log', level: 'error' })
✅ 最佳实践
journalctl -p 或 ELK / Loki 做分级查询| 场景 | 分级方式 |
|---|---|
| Node.js | Winston / Pino / log4js |
| systemd | syslog level |
| PM2 | stdout / stderr |
| Docker | 容器日志驱动 |
如果你愿意,可以告诉我:
我可以给你一套可直接用的 Debian 配置示例。