pino-transmit-http
v1.0.1
Published
A pino browser transmit that send log statements over HTTP
Downloads
842
Readme
pino-transmit-http
ATTENTION: draft version, not yet released!
Lead maintainer: Sven Tschui
This is a browser transmit for the Pino logger that sends log statements created in a browser environment to a remote server using HTTP calls (XHR, fetch or sendBeacon depending on availability).
You can use it like so:
$ npm install pino pino-transmit-http
const pino = require('pino');
const pinoTransmitHttp = require('pino-transmit-http');
const logger = pino({
browser: {
trasmit: pinoTransmitHttp()
}
})
logger.warn('hello pino')
A HTTP request will by default look like this
POST /log
Content-Type: application/json;charset=UTF-8
[{"ts":1531919330334,"messages":["hello pino"],"bindings":[],"level":{"label":"warn","value":40}}]
Options that can be passed to pinoTransmitHttp({ ... })
:
key | default | description
--- | --- | ---
throttle | 500
| Amount of milliseconds to throttle the transmission of the log messages. Note that trailing = true, leading = false
is used. See lodash.throttle
debounce | null
| Amount of milliseconds to debounce the transmission of the log messages. See lodash.debounce. If null then throttling is used
url | '/log'
| location where to send logs
useSendBeacon | true
| whether navigator.sendBeacon
should be used on unload
. Note that sendBeacon has various restriction. It operations on method POST
only and can not send custom HTTP headers. content-type
is always text/plain
.
forceSendBeacon | false
| The transmit will fallback to XHR or fetch when a HTTP method other than POST
or custom http headers are used since this is not supported by sendBeacon
. With forceSendBeacon
you can disable the fallback and use sendBeacon
anyway. Note that in this case the log calls made using sendBeacon
are issued as HTTP POST
and without any custom headers.
method | 'POST'
| method to be used by XHR and fetch calls. Note that when you pass in a method other than POST
, sendBeacon
will not be used unless you pass forceSendBeacon
.
headers | { 'content-type': 'application/json;charset=UTF-8' }
for XHR and fetch calls. Not supported for sendBeacon
calls | headers added to XHR and fetch calls. Note that when you pass in custom headers sendBeacon
will not be used unless you pass forceSendBeacon
.
fetch | null
| fetch instance to be used instead of the global fetch variable