A basic handler for [pino](https://github.com/pinojs/pino) logs that sends batches to a desired endpoint via HTTP or HTTPS.
npm install pino-http-send-2A basic handler for pino logs that sends batches to a desired
endpoint via HTTP or HTTPS.



_Pre v1 is subject to breaking changes on minor version change._
``console`
$ npm i pino-http-send
`console
$ 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]
`
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._
Example
`console`
$ node . | pino-http-send --url=http://localhost:8080
You can also do https...
`console`
$ node . | pino-http-send --url=https://myserver.com:8080
- ndjson - New-line delimited JSON. See ndjsonjson
- - Standard JSON sending of data. Logs are sent in the format of`
json`
{
"logs": [...logs]
}
Currently only basic auth is implemented for the CLI usage. For header usage, you can see the API usage.
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".
The options passed to this follow the same values as the CLI defined above.
| Property | Type | Required/Default |
| --------- | ----------------------- | ---------------- |
| url | string | REQUIRED |boolean
| log | | false |boolean
| silent | | false |string
| method | | "POST" |string
| bodyType | | "json" |string
| username | | |string
| password | | |Record
| headers | | |number
| batchSize | | 10 |number
| retries | | 5 |number
| interval | | 1000 |number
| timeout | | 5000 |string
| config | | |
`ts
import { createWriteStream } from 'pino-http-send';
const stream = createWriteStream({
url: 'http://localhost:8080',
});
const logger = pino(
{
level: 'info',
},
stream,
);
logger.info('test log!');
``