technicallyjosh / pino-http-send

A basic PinoJS http(s) transport with batching!
6 stars 13 forks source link
logger pino transport

pino-http-send

A basic handler for pino logs that sends batches to a desired endpoint via HTTP or HTTPS.

npm Travis (.org) David

Pre v1 is subject to breaking changes on minor version change.

Installation

$ npm i pino-http-send

Usage

$ pino-http-send --help
pino-http-send [options]

Sending
  --method, -m
             [string] [choices: "POST", "PUT", "PATCH", "GET"] [default: "POST"]
  --bodyType, -b   type of body to send
                          [string] [choices: "json", "ndjson"] [default: "json"]
  --url            url to send logs to                       [string] [required]
  --batchSize, -s  how many logs to send at a time        [number] [default: 10]
  --timeout, -t    timeout (in ms) to send logs in bucket that are not filled
                                                        [number] [default: 5000]

Basic Auth
  --username, -u  basic auth username                                   [string]
  --password, -p  basic auth password                                   [string]

Retry
  --retries, -r   number of retries to do if failure       [number] [default: 5]
  --interval, -i  interval (in ms) to retry sending if failure
                                                        [number] [default: 1000]

Options:
  --help        Show help                                              [boolean]
  --version     Show version number                                    [boolean]
  --log, -l     log to console as well                [boolean] [default: false]
  --silent      silence pino-http-send logs for failures and retries
                                                      [boolean] [default: false]
  --config, -c  path to json config                                     [string]

Environment Variables

All options can be defined in the environment and are prefixed with PINO_HTTP_SEND_. All camel-cased options are parsed with delimiters of _.

_e.g. The option batchSize as an env var would be PINO_HTTP_SEND_BATCH_SIZE._

URL

Example

$ node . | pino-http-send --url=http://localhost:8080

You can also do https...

$ node . | pino-http-send --url=https://myserver.com:8080

Body Type

Auth

Currently only basic auth is implemented for the CLI usage. For header usage, you can see the API usage.

API

You can also use this module as a pino destination.

This will use the same batching function like the CLI usage. If the batch length is not reached within a certain time (timeout), it will auto "flush".

createWriteStream

The options passed to this follow the same values as the CLI defined above.

Property Type Required/Default
url string REQUIRED
log boolean false
silent boolean false
method string "POST"
bodyType string "json"
username string
password string
headers Record<string,string>
batchSize number 10
retries number 5
interval number 1000
timeout number 5000
config string
import { createWriteStream } from 'pino-http-send';

const stream = createWriteStream({
  url: 'http://localhost:8080',
});

const logger = pino(
  {
    level: 'info',
  },
  stream,
);

logger.info('test log!');