Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sventschui/pino-transmit-http
HTTP browser transmit for the pino logger
https://github.com/sventschui/pino-transmit-http
Last synced: 2 months ago
JSON representation
HTTP browser transmit for the pino logger
- Host: GitHub
- URL: https://github.com/sventschui/pino-transmit-http
- Owner: sventschui
- License: mit
- Created: 2018-07-18T13:18:42.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-07T20:43:32.000Z (over 4 years ago)
- Last Synced: 2024-11-01T13:51:44.345Z (3 months ago)
- Language: JavaScript
- Size: 55.7 KB
- Stars: 5
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pino-transmit-http [![Build Status](https://travis-ci.org/sventschui/pino-transmit-http.svg?branch=master)](https://travis-ci.org/sventschui/pino-transmit-http) [![Coverage Status](https://coveralls.io/repos/github/sventschui/pino-transmit-http/badge.svg?branch=master)](https://coveralls.io/github/sventschui/pino-transmit-http?branch=master)
**Lead maintainer:** [Sven Tschui](https://github.com/sventschui)
This is a browser transmit for the [Pino](https://github.com/pinojs/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:
```sh
$ npm install pino pino-transmit-http
``````js
const pino = require('pino');
const pinoTransmitHttp = require('pino-transmit-http');const logger = pino({
browser: {
transmit: pinoTransmitHttp()
}
})logger.warn('hello pino')
```A HTTP request will by default look like this
```json
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](https://lodash.com/docs#throttle)
debounce | `null` | Amount of milliseconds to debounce the transmission of the log messages. See [lodash.debounce](https://lodash.com/docs#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