- 强大的路由
- 专注于高性能
- 超高测试覆盖率
- 大量 HTTP 工具函数(重定向、缓存等)
- 查看系统支持 14+ 模板引擎
- 内容协商(Content negotiation)
- 可执行以快速生成应用程序
const app = require('express')();const pino = require('pino-http')();app.use(pino);app.get('/', function (req, res) {req.log.info('something');res.send('hello world');});app.listen(3000);
Pino 和 Hapi 集成Hapi 是开发人员信任的简单、安全的框架 以最小的开销和完整的开箱即用功能构建功能强大、可扩展的应用程序 , 在 NPM 上周平均下载量达到了 512k 。Pino 与 Hapi 的集成也非常简单 , 比如下面的示例:
'use strict';require('make-promises-safe');const Hapi = require('@hapi/hapi');const Pino = require('hapi-pino');async function start() {// 创建一个有host和port的服务器const server = Hapi.server({host: 'localhost',port: 3000,});// 添加路由server.route({method: 'GET',path: '/',handler: async function (request, h) {//request.log 是 HAPI 的标准日志记录方式request.log(['a', 'b'], 'Request into hello world');//也可以使用 pino 实例 , 这样会更快request.logger.info('In handler %s', request.path);return 'hello world';},});awAIt server.register(Pino);//也作为修饰的 APIserver.logger.info('another way for accessing it');//并通过 Hapi 标准日志系统server.log(['subsystem'], 'third way for accessing it');await server.start();return server;}start().catch((err) => {console.log(err);process.exit(1);});
Pino 与 Restifyrestify 是一个框架 , 利用 connect 风格的中间件来构建 REST API 。Pino 与 Restify 的集成也非常简单 , 比如下面的示例:const server = require('restify').createServer({ name: 'server' });const pino = require('restify-pino-logger')();server.use(pino);server.get('/', function (req, res) {req.log.info('something');res.send('hello world');});server.listen(3000);
Pino 与 KoaKoa 是用于 node.js 的富有表现力的 HTTP 中间件框架 , 使 Web 应用程序和 API 编写起来更轻松 。Koa 的中间件以类似堆栈的方式流动 , 允许开发者在下游执行操作然后在上游过滤和操作响应 。Koa 没有打包任何中间件 。Pino 与 Koa 的集成也非常简单 , 比如下面的示例:
const Koa = require('koa');const app = new Koa();const pino = require('koa-pino-logger')();app.use(pino);app.use((ctx) => {ctx.log.info('something else');ctx.body = 'hello world';});app.listen(3000);
Pino 与 httpPino 与 http 的集成也非常简单 , 比如下面的示例:const http = require('http');const server = http.createServer(handle);const logger = require('pino-http')();function handle(req, res) {logger(req, res);req.log.info('something else');res.end('hello world');}
Pino 与 NestNest 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架 。它基于现代 JAVAScript , 使用 TypeScript 构建(保留与纯 JavaScript 的兼容性)并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式响应式编程)的元素 。本质上 , Nest 是基于 Express , 但也提供了与广泛的其他库的兼容性 , 例如 Fastify , 允许轻松使用无数可用的第三方插件 。Pino 与 Nest 的集成也非常简单 , 比如下面的示例:
import { NestFactory } from '@nestjs/core'import { Controller, Get, Module } from '@nestjs/common'import { LoggerModule, Logger } from 'nestjs-pino'@Controller()export class AppController {constructor(private readonly logger: Logger) {}@Get()getHello() {this.logger.log('something')return `Hello world`}}@Module({controllers: [AppController],imports: [LoggerModule.forRoot()]})class MyModule {}async function bootstrap() {const app = await NestFactory.create(MyModule)await app.listen(3000)}bootstrap()
Pino 与 H3H3 是为高性能和可移植性构建的最小 http 框架 , NPM 上周平均下载量达到了 267K , 具有以下典型特性:- ?? 可移植:在 Serverless、Workers 和 Node.js 中完美运行
- ?? Minimal:小巧且支持 tree-shakable
- ?? 现代:原生 Promise 支持
- ?? 可扩展:附带一组可组合的实用程序 , 但可以扩展
- ?? 路由支持:使用 unjs/radix3 进行超快速路由匹配
推荐阅读
- 贾静雯|14岁穿短裤、炫富,同样早熟,为何王诗龄比多多更容易被宽容?
- 陈凯歌|《三分野》:林卿卿为何要出卖向园,投靠黎沁?
- 招聘|公司为何宁愿高薪从外招人当领导,也不愿从老员工中提拔呢?
- 王思聪|王思聪接受街头采访,被问当天为何不上班,王总表情逗笑众人
- 张亮|2009年,刘德华起诉刘德华板鸭败诉,为何张亮告张亮麻辣烫却赢了
- |《梦中的那片海》看到李上游侵犯赵小惠,才懂郭黑子为何为她痴狂
- 央视|电视一姐“消失”2年的姐姐,为何落得如此下场
- 铜币|光绪元宝铜币最高收藏价上百万 银币有上千万的版本为何相差很大
- 小龙女|为何尹志平一心求死,小龙女却不忍下手,同为女人,阿珂懂她的苦
- 黄晓明|去世快7年了,再看乔任梁父母如今现状,才明白他为何会选择自杀