温馨提示×

linux nodejs日志级别配置

小樊
42
2026-10-02 14:49:58
栏目: 编程语言

在 Linux 下运行 Node.js 应用时,**日志级别(log level)**通常取决于你使用的日志库或框架。下面按常见场景给你一个清晰总结。


一、Node.js 内置 console(不推荐生产)

console.log('info')
console.error('error')
console.warn('warn')

✅ 没有“级别开关”,只能自己控制是否输出
❌ 不适合生产环境


二、常用日志库及级别配置

1️⃣ Winston(最常用)

安装

npm install winston

示例配置

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info', // 日志级别
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'app.log' })
  ]
});

日志级别(从低到高)

error < warn < info < http < verbose < debug < silly

通过环境变量控制(推荐)

level: process.env.LOG_LEVEL || 'info'
LOG_LEVEL=debug node app.js

2️⃣ Pino(高性能)

npm install pino
const pino = require('pino');
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });

logger.info('hello');

级别:

fatal error warn info debug trace

3️⃣ Log4js

npm install log4js
const log4js = require('log4js');
log4js.configure({
  level: 'info',
  appenders: { out: { type: 'console' } },
  categories: { default: { appenders: ['out'], level: 'info' } }
});

三、通过 PM2 控制日志级别(Linux 常用)

PM2 本身不直接控制“应用日志级别”,但可配合环境变量:

pm2 start app.js --env production --log-level error

或:

LOG_LEVEL=debug pm2 restart app

四、Systemd(Linux 服务)

如果你用 systemd 启动 Node:

[Service]
Environment=LOG_LEVEL=debug
ExecStart=/usr/bin/node /opt/app/app.js

五、推荐最佳实践 ✅

✅ 使用 Winston / Pino
✅ 日志级别用环境变量控制
✅ 生产环境默认 info 或 warn
✅ 调试时临时切 debug


如果你能告诉我:

  • 用的 日志库
  • 是否 PM2 / Docker / systemd
  • 是否 Express / NestJS

我可以直接给你一套可复制的配置。

0 踩