New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

client-logger

Package Overview
Dependencies
Maintainers
3
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

client-logger

Library for sending logs and stats through a proxy server with a transport protocol of choice.

latest
npmnpm
Version
0.5.2
Version published
Maintainers
3
Created
Source

ClientLogger

Library for sending logs and stats through a proxy server with a transport protocol of choice.

Usage

import {Publisher, Logger, StatsRecorder, transports} from 'client-logger';

const publisher = new Publisher();

// This must be called to set the window unload listener and to start sending
// telemetry to the server periodically. Otherwise you have to manually call
// publisher.flush() each time you wish to send telemetry to the server.
publisher.start();

publisher.addTransport(
  new transports.HttpTransport({
    url: 'https://my-logs-server.com/',
    method: 'POST',
    encode: ({logs, stats}) => {
      return JSON.stringify({logs: logs || [], stats: stats || []});
    };
  })
);

const logger = new Logger({
  publisher: publisher,
  tags: {
    app_version: 'some-version',
    user_agent: window.navigator.userAgent,
    lazy_tag: () => 'evaluated-on-log'
  }
});

const statsRecorder = new StatsRecorder({
  publisher: publisher,
  globalTags: [
    'app_version:some-version'
  ]
});

Configuration

const publisher = new Publisher({
  publishInterval: 3000, // in milliseconds
  maximumBatchSize: 50,
  maximumBufferSize: 1000
});

Logger

Logger is similar to the Console logger. It supports debug, log, info, warn and error calls.

logger.info('Hello World', {sender: 'mars'});

Logger by default doesn't print anything to the dev console. This however can be enabled by calling logger.enableLiveLogs(). It will also save the preference in the local storage.

Stats Recorder

Stats recorder uses statsd interface: timing, increment, decrement, gauge, histogram, set.

statsRecorder.increment('user.connected');

Transports

There are currently two transports available: HttpTransport and CustomTransport.

Transports are tried in order. If publish fails with one transport then the next one is used instead.

publisher.addTransport(
  new transports.CustomTransport(({payload}) => {
    // Send payload which includes {logs, stats} over some custom mechanism
    // Return promise which resolves when the request has succeeded and rejects otherwise
  })
);

publisher.addTransport(
  new transports.HttpTransport({
    url: 'https://my-logs-server.com/',
    method: 'POST',
    encode: ({logs, stats}) => {
      return JSON.stringify({logs, stats});
    };
  })
);

Transports can be added at any time. It's also possible to specify the order by using position:

  publisher.addTransport(transport);
  publisher.addTransport(otherTransport, {position: 0}); // This makes sure otherTransport is tried first

FAQs

Package last updated on 25 Nov 2025

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