在 Node.js 里,“日志级别”通常取决于你用的日志库,而不是 Node.js 本身。下面按常见情况说明如何调整。
console(最直接,但不推荐生产)console 本身没有日志级别概念,只能通过环境变量或手动控制:
const LOG_LEVEL = process.env.LOG_LEVEL || 'info';
function log(level, msg) {
const levels = { error: 0, warn: 1, info: 2, debug: 3 };
if (levels[level] <= levels[LOG_LEVEL]) {
console[level](msg);
}
}
log('debug', 'debug msg');
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
level: process.env.LOG_LEVEL || 'info', // 关键配置
format: winston.format.simple(),
transports: [new winston.transports.Console()]
});
logger.error('error');
logger.warn('warn');
logger.info('info');
logger.debug('debug');
error > warn > info > http > verbose > debug > silly
LOG_LEVEL=debug node app.js
npm install pino
const pino = require('pino');
const logger = pino({
level: process.env.LOG_LEVEL || 'info'
});
logger.info('info');
logger.debug('debug');
fatal > error > warn > info > debug > trace
LOG_LEVEL=debug node app.js
Morgan 没有标准日志级别,但可以通过 NODE_ENV 控制:
const morgan = require('morgan');
app.use(morgan('dev')); // dev / combined / common / short / tiny
# 生产环境
LOG_LEVEL=warn
# 测试 / 本地
LOG_LEVEL=debug
并在代码中读取:
level: process.env.LOG_LEVEL
| 场景 | 推荐级别 |
|---|---|
| 生产环境 | warn / error |
| 测试环境 | info |
| 本地开发 | debug |
| 性能敏感 | pino + warn |
你可以告诉我:
我可以直接给你可复制的完整配置示例。