Skip to content
🌲Basic prettifier for Pino log lines
Branch: master
Clone or download
Latest commit d1fd01b Aug 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Handle timestamp 0 in prettifyTime (#76) Aug 15, 2019
test Handle timestamp 0 in prettifyTime (#76) Aug 15, 2019
.editorconfig Initial code commit Mar 30, 2018
.gitignore Initial code commit Mar 30, 2018
.travis.yml [WIP] Plain ndjson (#58) Apr 28, 2019
LICENSE [WIP] Plain ndjson (#58) Apr 28, 2019 Fix typo in README Jun 3, 2019
bin.js Support custom timestamp property (#67) May 25, 2019
demo.png Add demo screenshot Apr 4, 2018
index.js add check for numbers Jun 18, 2019
package.json Bumped v3.2.1 Aug 15, 2019


Build Status Coverage Status

This module provides a basic ndjson formatter. If an incoming line looks like it could be a log line from an ndjson logger, in particular the Pino logging library, then it will apply extra formatting by considering things like the log level and timestamp.

A standard Pino log line like:

{"level":30,"time":1522431328992,"msg":"hello world","pid":42,"hostname":"foo","v":1}

Will format to:

[1522431328992] INFO (42 on foo): hello world


Using the example script from the Pino module, and specifying that logs should be colored and the time translated, we can see what the prettified logs will look like:



$ npm install -g pino-pretty


It's recommended to use pino-pretty with pino by piping output to the CLI tool:

pino app.js | pino-pretty

CLI Arguments

  • --colorize (-c): Adds terminal color escape sequences to the output.
  • --crlf (-f): Appends carriage return and line feed, instead of just a line feed, to the formatted log line.
  • --errorProps (-e): When formatting an error object, display this list of properties. The list should be a comma separated list of properties Default: ''.
  • --levelFirst (-l): Display the log level name before the logged date and time.
  • --errorLikeObjectKeys (-k): Define the log keys that are associated with error like objects. Default: err,error.
  • --messageKey (-m): Define the key that contains the main log message. Default: msg.
  • --timestampKey (-m): Define the key that contains the log timestamp. Default: time.
  • --translateTime (-t): Translate the epoch time value into a human readable date and time string. This flag also can set the format string to apply when translating the date to human readable format. For a list of available pattern letters see the dateformat documentation.
    • The default format is yyyy-mm-dd HH:MM:ss.l o in UTC.
    • Require a SYS: prefix to translate time to the local system's timezone. A shortcut SYS:standard to translate time to yyyy-mm-dd HH:MM:ss.l o in system timezone.
  • --search (-s): Specify a search pattern according to jmespath.
  • --ignore (-i): Ignore one or several keys: (-i time,hostname)

Programmatic Integration

We recommend against using pino-pretty in production, and highly recommend installing pino-pretty as a development dependency.

When installed, pino-pretty will be used by pino as the default prettifier.

Install pino-pretty alongside pino and set the prettyPrint option to true:

const pino = require('pino')
const logger = pino({
  prettyPrint: true

The prettyPrint option can also be an object containing pretty-print options:

const pino = require('pino')
const logger = pino({
  prettyPrint: { colorize: true }

See the Options section for all possible options.


pino-pretty exports a factory function that can be used to format log strings. This factory function is used internally by Pino, and accepts an options argument with keys corresponding to the options described in CLI Arguments:

  colorize: chalk.supportsColor, // --colorize
  crlf: false, // --crlf
  errorLikeObjectKeys: ['err', 'error'], // --errorLikeObjectKeys
  errorProps: '', // --errorProps
  levelFirst: false, // --levelFirst
  messageKey: 'msg', // --messageKey
  timestampKey: 'time', // --timestampKey
  translateTime: false, // --translateTime
  search: 'foo == `bar`', // --search
  ignore: 'pid,hostname' // --ignore

The colorize default follows chalk.supportsColor.


MIT License

You can’t perform that action at this time.