Packages

pino

10.4.0 · 2 Oct 2026MIT76M / weekRepositoryHomepagenpmAtom feed

Your version

6.0.0

major27 Mar 2020Where it was published

6.14.0 is the newest release of 6.x.

In short

7 breaking4 changed

  • breaking

    Drops support for no longer maintained versions of Node.js #776 #747

  • breaking

    Removes v from log lines #623 #620

  • breaking

    Logs literal null #711 #706

  • breaking

    Adds formatters for core log components (a powerful new way to customize how log lines are rendered; thank you @delvedor) #775 #764

  • breaking

    Softens language around the modes of logging available #791 #785

  • breaking

    Removes implicit appending of objects to message strings (see below) #795 #793

  • breaking

    Codifies LTS policy going forward #799

Release note

Major changes

  • breaking

    Drops support for no longer maintained versions of Node.js #776 #747

  • breaking

    Removes v from log lines #623 #620

  • breaking

    Logs literal null #711 #706

  • breaking

    Adds formatters for core log components (a powerful new way to customize how log lines are rendered; thank you @delvedor) #775 #764

  • breaking

    Softens language around the modes of logging available #791 #785

  • breaking

    Removes implicit appending of objects to message strings (see below) #795 #793

  • breaking

    Codifies LTS policy going forward #799

Implicit formatting removed #795

Previously, Pino emulated Bunyan's behavior when interpreting logs like:

  1. log.info('a message', { an: 'object'})

  2. log.info('a', 'silly', 'message')

The old behavior would result in 1 yielding "msg":"a message {\"an\":\"object\"}" and 2 yielding
"msg":"a silly message". As of this release, 1 will yield "msg":"a message" and 2 will yield "msg":"a".

To get the same results in Pino v6 as in previous releases actual format identifiers should be provided, e.g.:

  1. log.info('a message %j', { an: 'object' })

  2. log.info('a %s %s', 'silly', 'message')