总结了几个比较好用的Nodejs日志库,我认为一个 合格的日志库 需要
- 支持多种传输,如文件、控制台、HTTP 等。
- 可定制的日志级别和格式。
- 异步日志记录。
根据上述的需求,挑选出 几款比较好用的日志库,
1. Winston(Github 20k⭐️)
简介: Winston 是一个非常流行的 Node.js 日志库,以其灵活性和强大的功能著称。它支持多种日志传输方式,并可以轻松配置日志格式和级别。
基础功能
特点:
- 支持多种传输(transports)。
- Winston 提供了可查询的日志存档,这使得搜索和分析日志更加容易。
- 异步日志记录,性能优良。
- 健全的文档,社区友好。
典型使用场景:
- 需要在不同环境中(开发、测试、生产)记录日志。
- 需要将日志发送到多个目标(例如控制台和文件)。
- 需要结构化的日志输出以便于分析和监控。
基础代码示例:
const { createLogger, format, transports } = require('winston');
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp(),
format.json()
),
transports: [
new transports.Console(),
new transports.File({ filename: 'combined.log' })
]
});
logger.info('Hello, Winston!');
2. Pino (Github 9k⭐️)
简介: Pino 是一个高性能的 Node.js 日志库,专为速度和低开销而设计。它是 JSON 日志输出的理想选择。
特点:
- 使用简单。
- 轻量且高效,适用于高负载应用。
典型使用场景:
- 需要高性能日志记录的应用程序。
- 需要结构化日志输出以便于分析和监控。
- 实时系统或高频率日志写入场景。
基础代码示例:
const pino = require('pino');
const logger = pino({ level: 'info' });
logger.info('Hello, Pino!');
3. Bunyan (Github 7k⭐️)
简介: Bunyan 是一个简单易用的 Node.js 日志库,专注于提供结构化的 JSON 日志输出,便于后续的日志处理和分析。
特点:
- 提供日志过滤和格式化。
- 易于集成和扩展。
典型使用场景:
- 需要结构化日志以便后续处理和分析。
- 需要简单配置和快速上手的日志记录工具。
- 需要跨多个环境(开发、测试、生产)记录一致的日志。
基础代码示例:
const bunyan = require('bunyan');
const logger = bunyan.createLogger({ name: 'myapp' });
logger.info('Hello, Bunyan!');
4. Morgan (Github 7k⭐️)
简介: Morgan 是一个专为 HTTP 请求日志记录而设计的 Node.js 中间件,常用于 Express 应用中。
特点:
- 简单易用,无需复杂配置。
- 适合作为 Express 中间件使用。
典型使用场景:
- Express 应用的 HTTP 请求日志记录。
- 需要快速实现请求日志记录的场景。
- 需要简单、无复杂配置的日志工具。
基础代码示例:
const express = require('express');
const morgan = require('morgan');
const app = express();
app.use(morgan('combined'));
app.get('/', (req, res) => {
res.send('Hello, Morgan!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});