pinojs

    pinojs/pino

    #251 this week

    🌲 super fast, all natural json logger

    backend
    fast
    json
    logger
    nodejs
    pino
    JavaScript
    MIT
    18.0K stars
    981 forks
    18.0K GitHub watchers
    Updated 7/14/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Pino is a super fast JSON logger designed for Node.js environments, focusing on low overhead and high performance logging.
    • Key features include asynchronous logging, child loggers, transports for log processing, and compatibility with popular web frameworks like Fastify and Express.
    • Its strength lies in speed, being over 5x faster than alternatives, but it requires separate processes for log processing due to Node's single-threaded nature.
    • Organizations can use Pino in production to efficiently handle high-volume logging with minimal performance impact, integrating it with existing Node.js applications and frameworks.
    • Ideal use cases include performance-critical Node.js applications needing structured JSON logs, real-time monitoring, and scalable log processing pipelines.

    About pino

    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 compatability 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.

    Discover Repositories

    Search across tracked repositories by name or description