温馨提示×

debian nodejs日志如何分级

小樊
44
2026-09-16 09:18:57
栏目: 编程语言

在 Debian 上,Node.js 本身不自带系统级日志分级机制,日志分级通常取决于你使用的日志库运行方式(systemd / pm2 / docker)以及syslog。下面按常见场景系统说明。


一、Node.js 应用层日志分级(最常见)

1. 使用日志库(推荐)

Node.js 通常通过日志库来分级,常见库及级别:

✅ Winston

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。


✅ Pino(高性能)

const pino = require('pino');
const logger = pino({ level: 'info' });

logger.info('info');
logger.debug('debug');

级别:

fatal > error > warn > info > debug > trace

✅ log4js

log4js.configure({
  level: 'INFO'
});

级别:

FATAL > ERROR > WARN > INFO > DEBUG > TRACE

2. 使用 console(不推荐生产)

console.error(); // stderr
console.warn();  // stdout
console.log();   // stdout
console.info();

⚠️ console 没有真正的“级别控制”,只能靠人为规范。


二、Debian 系统级日志分级(systemd)

如果你是 systemd 启动 Node.js(推荐方式):

1. 查看日志

journalctl -u your-node-service

2. 优先级(syslog 标准)

0 emerg
1 alert
2 crit
3 err
4 warning
5 notice
6 info
7 debug

3. 查看指定级别

journalctl -u your-node-service -p err
journalctl -u your-node-service -p warning

4. Node.js 如何对应

  • console.errorerr
  • console.warnwarning
  • console.lognotice/info

三、PM2 日志分级

PM2 默认区分:

~/.pm2/logs/app-error.log
~/.pm2/logs/app-out.log
  • error 日志:stderr
  • 普通日志:stdout

可结合 Winston + PM2:

new winston.transports.File({ filename: 'error.log', level: 'error' })

四、生产环境推荐方案(Debian)

最佳实践

  • 使用 Winston / Pino
  • 日志输出到 stdout / stderr
  • 由 systemd / docker 收集
  • 使用 journalctl -p 或 ELK / Loki 做分级查询

五、总结对照表

场景 分级方式
Node.js Winston / Pino / log4js
systemd syslog level
PM2 stdout / stderr
Docker 容器日志驱动

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

  • 你是用 systemd / pm2 / docker 启动 Node.js?
  • 是否已有日志库?

我可以给你一套可直接用的 Debian 配置示例

0