Newsworthy Presidential Mistakes
    Have ideas to improve npm?Join in the discussion! »

    garnish

    5.2.0 • Public • Published

    garnish

    stable

    Prettifies ndjson or bole logs from budo, wzrd and other tools.

    Example with budo, which uses this under the hood.

    Install

    npm install garnish [-g|--save-dev]

    Usage

    CLI

    Pipe a ndjson emitter into garnish like so:

    node app.js | garnish [opts]
     
    Options:
     
        --level, -l    the minimum debug level, default 'debug'
        --name, -n     the default app name

    Where level can be debug, info, warn, error.

    API

    garnish([opt])

    Returns a duplexer that parses input as ndjson, and writes a pretty-printed result. Options:

    • level (String)
      • the minimum log level to print (default 'debug')
      • the order is as follows: debug, info, warn, error
    • name (String)
      • the default name for your logger; a message's name field will not be printed when it matches this default name, to reduce redundant/obvious information in the logs.

    format

    Typically, you would use bole or ndjson to write the content to garnish. You can also write ndjson to stdout like so:

    // a log message
    console.log({
      name: 'myApp',
      level: 'warn',
      message: 'not found'
    })
     
    // a typical server message
    console.log({
      name: 'myApp',
      type: 'generated',
      level: 'info',
      url: '/foo.png',
      statusCode: 200,
      contentLength: 12800, // in bytes
      elapsed: 120 // in milliseconds
    })

    Currently garnish styles the following:

    • level
      • the log level e.g. debug, info, warn, error (default debug) - only shown if message is present
    • name
      • an optional event or application name. It's recommended to always have a name.
    • message
      • an event message.
    • url
      • a url (stripped to pathname), useful for router logging.
    • statusCode
      • an HTTP statusCode. Codes >=400 are displayed in red.
    • contentLength
      • the response size; if a number, bytes are assumed
    • elapsed
      • time elapsed since the previous related event; if a number, milliseconds are assumed
    • type
      • the type of event logged
    • colors
      • an optional color mapping for custom styles

    You can use the colors field to override any of the default colors with a new ANSI style.

    For example, the following will print elapsed in yellow if it passes our threshold:

    function logTime (msg) {
      var now = Date.now()
      var time = now - lastTime
      lastTime = now
     
      console.log({
        name: 'app',
        message: msg,
        elapsed: time + ' ms',
        colors: {
          elapsed: time > 1000 ? 'yellow' : 'green'
        }
      })
    }

    See Also

    License

    MIT, see LICENSE.md for details.

    Install

    npm i garnish

    DownloadsWeekly Downloads

    3,192

    Version

    5.2.0

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar