1.1.0 • Published 1 year ago

@gravity-ui/ui-logger v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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});
1.1.0

1 year ago