@enjoytech/logging-api v5.2.3
Javascript Logging API
Dependencies
This library is using async / await and Promise and will therefore you must provide a polyfill for
generators in older browsers. @babel/polyfill is good catch-all to provide that
functionality and many others.
Endpoint Configuration
The D3 API endpoint URL and path is determined by window.location.hostname
UK: https://event-logging.uk.enjoy.com/prod/<source>
US: https://event-logging.enjoy.com/prod/<source>
The source is determined by the domain name. When the domain name is enjoy.com this is set to expert, otherwise it is set to internal.
Examples:
- A development server at
https://capcom.local.enjoytechnology.comwill use the endpointhttps://event-logging.enjoy.com/prod/internal - A staging server at
https://unicorn.stg.enjoytechnology.comwill use the endpointhttps://event-logging.enjoy.com/prod/internal - A production UK server at
https://capcom.uk.enjoy.comwill use the endpointhttps://event-logging.uk.enjoy.com/prod/expert - A production US server at
https://capcom.enjoy.comwill use the endpointhttps://event-logging.enjoy.com/prod/expert
Config Options
developmentMode
boolean: (optional) Enables development mode
endpoint
string: (optional) development mode only A custom endpoint to send log events to. Override default endpoint configuration (above)
environment
string: (optional) development mode only Override default environment configuration (above)
source
string: (optional) development mode only Override default source configuration (above)
eventSource
string: (optional) Include a custom value in the source when logging. Will default to
<hostname>/client, but specifying this will set it to <hostname>/<eventSource>
eventPrefix
string: (optional) Prefix all events logged with logEvent with the specified string
appStateMethod
() => object | Promise<object>: (optional) If you app has global state that you would like to be
recorded with every event, you can provide a method that will return the serializable object
representing that state. This can also return a Promise which will be resolved before recording the
event. NOTE: This will be sent with every event, so be aware of the total size of the state you are
sending down.
Usage
import LoggingApi from 'logging-api'
import store from './myReduxStore'
const config = {
eventSource: 'my-source',
eventPrefix: 'mysrc_',
// Synchronous app state example, but this could also return a Promise
appStateMethod: () => store.getState(),
}
const logger = new LoggingAPI(config)
logger.logEvent('my_event_name', { foo: 'bar' })
// Will emit an event named `mysrc_my_event_name`