“Node.js 没有日志”这个说法其实不太准确,更准确地说:Node.js 本身不会自动帮你写业务日志,它只提供了最基础的能力,日志有没有、怎么记,完全取决于你怎么写代码或用什么工具。
下面从几个常见原因给你说明一下为什么你“感觉 Node.js 没有日志”。
Node.js 的核心非常精简,它只提供:
console.log()console.error()console.warn()这些只是输出到终端,并不是“日志系统”。
✅ 示例:
console.log('server started');
但:
所以看起来“没日志”。
新手项目常见写法:
app.get('/', (req, res) => {
console.log('request');
res.send('ok');
});
一旦:
你就“看不到日志”了。
node app.js &pm2 logs✅ 正确方式(PM2):
pm2 logs
✅ Docker:
docker logs <container_id>
Node.js 生态里日志库是标配,不是“可选”。
winston(最流行)pino(性能最好)log4jsconst winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: 'app.log' }),
new winston.transports.Console()
]
});
logger.info('server started');
如果你用:
但没加日志中间件,也不会有访问日志。
const morgan = require('morgan');
app.use(morgan('combined'));
常见问题:
try {
// 出错
} catch (e) {
// 啥也没做
}
或者:
process.on('uncaughtException', () => {});
这样你永远看不到错误日志。
Node.js 不是没有日志,而是“默认不帮你管日志”。
✅ 用 winston / pino
✅ 写文件 + 控制台
✅ 加 HTTP 日志中间件
✅ 正确查看 PM2 / Docker 日志
如果你愿意,可以告诉我:
我可以直接帮你配一套完整日志方案。