pino README

The project's README from github.com/pinojs/pino. As one markdown file: README.md.

banner

pino

npm version Build Status js-standard-style

Very low overhead JavaScript logger.

Documentation

Runtimes

Node.js

Pino is built to run on Node.js.

Bare

Pino works on Bare with the pino-bare compatibility module.

Pear

Pino works on Pear, which is built on Bare, with the 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

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:

Essentials

Development Formatting

The pino-pretty module can be used to format logs during development:

pretty demo

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⇗ 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 document for comparisons.

Bundling support

Pino supports being bundled using tools like webpack or esbuild.

See Bundling document for more information.

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 file for more details.

Acknowledgments

This project was kindly sponsored by nearForm. This project is kindly sponsored by Platformatic.

Logo and identity designed by Cosmic Fox Design: https://www.behance.net/cosmicfox.

License

Licensed under MIT.

pino (pinojs/pino)

Searching Database…

18.3K ·GitHub
Что это такое?Pino — это очень быстрый JSON-логгер для JavaScript с минимальными накладными расходами. Он пишет структурированные логи в формате JSON прямо из Node.js-приложения, почти не влияя на производительность.
Это библиотека, которую я подключаю в свой код, или отдельный сервис, который нужно запускать?Библиотека: вы устанавливаете её через npm или yarn и создаёте логгер внутри своего приложения. Никакой сервер или демон не нужен.
Как добавить её в проект?Установите её через npm или yarn, подключите в коде — и можно писать логи. Есть готовые инструкции по интеграции с Fastify, Express, Hapi, Restify, Koa, Node core http, Nest и Hono.
Она работает только под Node.js или на других рантаймах тоже?Pino создан для Node.js, но в README также упомянута поддержка Bare и Pear через модуль совместимости pino-bare. Поставляется как обычный npm-пакет.
Если каждая строка лога — это сырой JSON, не станет ли мой терминал нечитаемым?Это плата за быстрый вывод, удобный для машинной обработки. Для разработки есть модуль pino-pretty, который форматирует JSON в человекочитаемые логи.
А можно использовать её в браузерном или сборочном коде?Да — есть документированный Browser API, и Pino явно поддерживает сборку бандлов такими инструментами, как webpack или esbuild.
Она бесплатная, в том числе для коммерческих проектов?Да — Pino распространяется по лицензии MIT, поэтому его можно свободно использовать в любом проекте, коммерческом или нет.
Насколько Pino быстрее других логгеров?В README утверждается, что во многих случаях Pino более чем в 5 раз быстрее аналогов, и даётся ссылка на документ Benchmarks с подробными сравнениями. Смысл минимальных накладных расходов в том, что обильное логирование не снижает количество запросов в секунду, которое выдерживает приложение.
Как правильно отправлять, переформатировать логи или настраивать оповещения по ним в продакшене?Не в основном потоке приложения: поскольку event loop в Node однопоточный, README рекомендует выполнять всю обработку логов в виде транспортов в worker-потоке через API pino.transport.
Можно ли убрать из логов чувствительные поля, например пароли?Да — в README описан Redaction API, работающий вместе с дочерними логгерами (child loggers) и транспортами, так что чувствительные значения можно исключить из вывода логов.
Creator
pinojs
Size
3.4 MB
Stars
18.3K
Age
10y
Commits · 90 Days