base on 🌲 super fast, all natural json logger ![banner](pino-banner.png) # pino [![npm version](https://img.shields.io/npm/v/pino)](https://www.npmjs.com/package/pino) [![Build Status](https://img.shields.io/github/actions/workflow/status/pinojs/pino/ci.yml)](https://github.com/pinojs/pino/actions) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://standardjs.com/) [Very low overhead](#low-overhead) JavaScript logger. ## Documentation * [Benchmarks β‡—](/docs/benchmarks.md) * [API β‡—](/docs/api.md) * [Browser API β‡—](/docs/browser.md) * [Redaction β‡—](/docs/redaction.md) * [Child Loggers β‡—](/docs/child-loggers.md) * [Transports β‡—](/docs/transports.md) * [Diagnostics β‡—](/docs/diagnostics.md) * [Web Frameworks β‡—](/docs/web.md) * [Pretty Printing β‡—](/docs/pretty.md) * [Asynchronous Logging β‡—](/docs/asynchronous.md) * [Ecosystem β‡—](/docs/ecosystem.md) * [Help β‡—](/docs/help.md) * [Long Term Support Policy β‡—](/docs/lts.md) ## Runtimes ### Node.js Pino is built to run on [Node.js](http://nodejs.org). ### Bare Pino works on [Bare](https://github.com/holepunchto/bare) with the [`pino-bare`](https://github.com/pinojs/pino-bare) compatability module. ### Pear Pino works on [Pear](https://docs.pears.com), which is built on [Bare](https://github.com/holepunchto/bare), with the [`pino-bare`](https://github.com/pinojs/pino-bare) compatibility module. ## Install Using NPM: ``` $ npm install pino ``` Using YARN: ``` $ yarn add pino ``` If you would like to install pino v6, refer to https://github.com/pinojs/pino/tree/v6.x. ## Usage ```js const logger = require('pino')() logger.info('hello world') const child = logger.child({ a: 'property' }) child.info('hello child!') ``` This produces: ``` {"level":30,"time":1531171074631,"msg":"hello world","pid":657,"hostname":"Davids-MBP-3.fritz.box"} {"level":30,"time":1531171082399,"msg":"hello child!","pid":657,"hostname":"Davids-MBP-3.fritz.box","a":"property"} ``` For using Pino with a web framework see: * [Pino with Fastify](docs/web.md#fastify) * [Pino with Express](docs/web.md#express) * [Pino with Hapi](docs/web.md#hapi) * [Pino with Restify](docs/web.md#restify) * [Pino with Koa](docs/web.md#koa) * [Pino with Node core `http`](docs/web.md#http) * [Pino with Nest](docs/web.md#nest) * [Pino with Hono](docs/web.md#hono) <a name="essentials"></a> ## Essentials ### Development Formatting The [`pino-pretty`](https://github.com/pinojs/pino-pretty) module can be used to format logs during development: ![pretty demo](pretty-demo.png) ### Transports & Log Processing Due to Node's single-threaded event-loop, it's highly recommended that sending, alert triggering, reformatting, and all forms of log processing are conducted in a separate process or thread. In Pino terminology, we call all log processors "transports" and recommend that the transports be run in a worker thread using our `pino.transport` API. For more details see our [Transportsβ‡—](docs/transports.md) document. ### Low overhead Using minimum resources for logging is very important. Log messages tend to get added over time and this can lead to a throttling effect on applications – such as reduced requests per second. In many cases, Pino is over 5x faster than alternatives. See the [Benchmarks](docs/benchmarks.md) document for comparisons. ### Bundling support Pino supports being bundled using tools like webpack or esbuild. See [Bundling](docs/bundling.md) document for more information. <a name="team"></a> ## The Team ### Matteo Collina <https://github.com/mcollina> <https://www.npmjs.com/~matteo.collina> <https://twitter.com/matteocollina> ### David Mark Clements <https://github.com/davidmarkclements> <https://www.npmjs.com/~davidmarkclements> <https://twitter.com/davidmarkclem> ### James Sumners <https://github.com/jsumners> <https://www.npmjs.com/~jsumners> <https://twitter.com/jsumners79> ### Thomas Watson Steen <https://github.com/watson> <https://www.npmjs.com/~watson> <https://twitter.com/wa7son> ## Contributing Pino is an **OPEN Open Source Project**. This means that: > Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project. See the [CONTRIBUTING.md](https://github.com/pinojs/pino/blob/main/CONTRIBUTING.md) file for more details. <a name="acknowledgments"></a> ## Acknowledgments This project was kindly sponsored by [nearForm](https://nearform.com). This project is kindly sponsored by [Platformatic](https://platformatic.dev). Logo and identity designed by Cosmic Fox Design: https://www.behance.net/cosmicfox. ## License Licensed under [MIT](./LICENSE). [elasticsearch]: https://www.elastic.co/products/elasticsearch [kibana]: https://www.elastic.co/products/kibana ", Assign "at most 3 tags" to the expected json: {"id":"6647","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"