Giter VIP home page Giter VIP logo

ui-logger's Introduction

UI logger

Usage

npm i @gravity-ui/ui-logger
import logger from '@gravity-ui/ui-logger';

try {
  // logger.log(message: string, extraData?: Record<string, unknown>);
  logger.log('Info event', {extraInfo: 'Extra data'});
} catch (error) {
  // logger.logError(message: string, error?: Error, extraData?: Record<string, unknown>);
  logger.logError('Error event', error, {extraError: 'Extra data'});
}

// get all recorded logs
const logs = logger.getLogs();

Named loggers

By default, logs are written to namespace with the name default.

Possible reasons to create your own namespace:

  • Logically split logs of a large application.
  • For certain errors, you need a custom error parser.
import logger from '@gravity-ui/ui-logger';

// Returns or creates a new logger instance with the name my_namespace
const namedLogger = logger.get('my_namespace');
namedLogger.log('Will record to scope my_namespace');

const anotherOneLogger = namedLogger.get('another_one');
namedLogger.log('Will record to scope another_one');

Settings

The settings can be either global for all loggers or local for a specific logger.

import logger from '@gravity-ui/ui-logger';

type DefaultSettings = {
  // The number of log records for each namespace. By default, 1000.
  bufferSize: number;
  // Function for error parsing in logError.
  parseError: (error: Error) => Record<string, unknown>;
  // Print log, logError to the console. By default, true.
  printLog: boolean;
  // Callback function that is called every time logError is called with the same arguments as logError
  logErrorCallback: ((message: string, error?: Error, data?: ExtraData) => void) | null;
};

// will change the number of records for all loggers
logger.setDefault({bufferSize: 200});

type LoggerSettings = {
  bufferSize: number;
  parseError: (error: Error) => Record<string, unknown>;
  logErrorCallback: ((message: string, error?: Error, data?: ExtraData) => void) | null;
};

const namedLogger = logger.get('name');
function namedParseError(error: Error) {
  return {message: error.message, meta: {}};
}

// will change ParseError only for logger `name`
namedLogger.setSettings({parseError: namedParseError});

ui-logger's People

Contributors

jhoncool avatar gravity-ui-bot avatar yc-ui-bot avatar

Watchers

Alexey Baranov avatar Anton Chernousov avatar  avatar

Forkers

myraxbyte

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.