Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fifo-logger

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fifo-logger

Simple event logger for the browser and node.js

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

fifo-logger

NPM version build status Test coverage npm download

Simple event logger for the browser and node.js inspired by pino.

By default it will keep the 10'000 last events that can easily be retrieved and filtered.

Installation

$ npm i fifo-logger

Simple usage

import { FifoLogger } from 'fifo-logger';

const logger = new FifoLogger({
  limit: 1000, // default value
  level: 'info', // by default we will not log the level under 'info' (trace and debug)
});

logger.trace('a trace');
logger.debug('a debug');
logger.info('an info');
logger.warn('a warning');
logger.error('a error');
logger.fatal('fatal');

// you have also the possibility to log an object or object + message

logger.warn({ a: 1, b: 2, c: 'Hello' }, 'a warning');

// errors can also be directly added to the logger

logger.fatal(new Error('a fatal error'));

// to get the logs

const logs = logger.getLogs();

Logging in a specific context

A child logger may be created in order to store specific related logs. Each logger or child logger will receive a specific UUID.

import { FifoLogger } from 'fifo-logger';

const logger = new FifoLogger();
logger.info('an info');

const childLogger = logger.child();
childLogger.info('from child');

const grandChildLogger = childLogger.child();
grandChildLogger.info('from grandchild');

const anotherLogger = logger.child();
anotherLogger.info('from another child');

console.log(logger.getLogs()); // 1 element
console.log(logger.getLogs({ includeChildren: true })); // 4 elements
console.log(childLogger.getLogs()); // 1 element
console.log(childLogger.getLogs({ includeChildren: true })); // 3 elements

Callback when new logs are added

If you need to update the log list based on new addition you can add the onChange callback

const logger = new FifoLogger({
  onChange: (log, logs, info) => {
    console.log(log, logs, info);
  },
});
logger.info('Hello world');

// info contains 'depth' starting at 1

Callback with throttling

Libraries may be quite verbose and you can throttle the callback using such a code

import { throttle } from 'throttle-debounce';

import { FifoLogger } from 'fifo-logger';

let results: any = [];

let throttleFunc = throttle(100, (log, logs) => {
  results.push(log.message);
  results.push(logs.length);
});

const logger = new FifoLogger({
  onChange: throttleFunc,
});

logger.info('first info');
logger.info('second info');

const start = Date.now();
while (Date.now() - start < 120);

logger.info('an info after 120ms');

console.log(results);
// ['first info', 1, 'an info after 120ms', 3]

In the browser

<html>
  <head>
    <script
      src="https://www.lactame.com/lib/fifo-logger/0.3.0/fifo-logger.js"
      type="text/javascript"
    ></script>
    <script Logger="fifo-logger" type="text/javascript">
      const logger = new FifoLogger.FifoLogger({
        onChange: (log, logs) => {
          console.log(logs);
          document.getElementById('logs').innerHTML =
            '<table><tr><th>Level</th><th>Message</th></tr>' +
            logs
              .map((log) => {
                return `<tr><td>${log.level}</td><td>${log.message}</td></tr>`;
              })
              .join('') +
            '</table>';
        },
      });
    </script>
  </head>
  <body>
    <button onclick="logger.warn('warning')">Warning</button>
    <div id="logs"></div>

    <script>
      logger.info('Hello World!');
      logger.error('This is an error');
    </script>
  </body>
</html>

License

MIT

FAQs

Package last updated on 05 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