Socket
Socket
Sign inDemoInstall

@global-savings-group/extension-logs

Package Overview
Dependencies
Maintainers
2
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@global-savings-group/extension-logs

Browser Extension DataDog monitoring & logging service


Version published
Maintainers
2
Created
Source

Extension logs and monitoring service

Based on DataDog and required Megatron clientHash as session ID.

Documentation: https://docs.datadoghq.com/logs/error_tracking/browser_and_mobile?tab=browser

Usage

Install package:

  • npm install @global-savings-group/extension-logs

Import log service and init in project:

// Logger.ts
import { ExtensionLogsService } from '@global-savings-group/extension-logs';

// IMPORTANT: 
// If using more than one instance of ExtensionLogsService, 
// each instance must have a unique store key.
// In the example below, the default store key is "DataDogLogger".
export const logsService = new ExtensionLogsService();

/**
 * init() can be called asynchronously and any log calls (debug, error, info, warn) will be queued until then
 * init() can be called multiple times to change options or enable/disable logging
 * if init() is not called within 60s, it logs error to console as reminder to avoid memory leaks
 */
logsService.init({
  // required for enabling logging to DataDog API
  // if omitted or set to undefined - logging is disabled
  clientToken: '{DataDog client token}',
  
  // optional; values: 'local' | 'production' | 'staging'
  env: 'production',
  
  // required
  service: '{brand}:extension',
  
  // optional session ID
  sessionId: '{Megatron clientHash}',

  // optional - send logs for X% of sessions
  // value [0..1] - 0%..100%; default value - 1 (send logs for all sessions)
  sessionSampleRate: 0.2, // log 20% of all sessions
  
  // optional - limit logs per 24h that are sent to DataDog
  // default value - undefined (send all logs)
  threshold: 2000,
  
  // optional version
  version: chrome.runtime.getManifest().version,
});

logsService.logConsoleErrors();
logsService.logUnhandledErrors();

/**
 * ExtensionLogsService logs
 *
 * Every log method accepts these params:
 * - message: string
 * - data?: object - additional data
 * - forceLog?: boolean - set to true to always log, overriding the sessionSampleRate set in init() or threshold value
 */

logsService.debug({
  message: 'Debug message',
  data: { 'x': 'y' }, // addtional log data
  forceLog: true, // force logging; ignores sessionSampleRate or threshold
});

logsService.error({
  message: 'Error message',
  origin: 'custom',
  stack: '{call stack as string}'
});

logsService.info({
  message: 'Info message',
});

logsService.warn({
  message: 'Warn message',
});

Enable session logging:

// background.ts
const sessionTrackAlarmName = 'session:track';
chrome.alarms.onAlarm.addListener(async (alarm) => {
  if (alarm.name === sessionTrackAlarmName) {
    logsService.ping();
  }
});

chrome.alarms.create(sessionTrackAlarmName, { periodInMinutes: 10 });

Optionally, ping() supports callback to add custom session data:

const getSessionData = () => ({
  my_custom_session_data: 'some data',
  another_key: 'more data',
});

logsService.ping(getSessionData);

FAQs

Package last updated on 23 Apr 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc