1.5.2 • Published 6 days ago

mainlog v1.5.2

Weekly downloads
-
License
MIT
Repository
github
Last release
6 days ago

Logger

Logger with channels & domain metadata decorator

1) Usage: 1) Prepare: 1) Import types; 2) Prepare channel; 3) Create logger; 4) Setup logger. 2) Commands: 1) Call logger.

Usage

Prepare

Import types

Optional

/**
 * @typedef {import('mainlog').ILoggerChannel} ILoggerChannel
 * @typedef {import('mainlog').LoggerChannels} LoggerChannels
 * @typedef {import('mainlog').LoggerLevel} LoggerLevel
 * @typedef {import('mainlog').LoggerStringLevel} LoggerStringLevel
 */

Prepare channel

import { Logger, DomainLogger, ConsoleLoggerChannel } from 'mainlog';

/** @type {ILoggerChannel} */ 
const consoleChannel = {
  setup: () => { },

  trace: message => console.log(message),
  debug: message => console.debug(message),
  info: message => console.info(message),
  warn: message => console.warn(message),
  error: message => console.error(message),
  fatal: message => console.error(message),

  getLevels: () => Object.entries(levels)
    .reduce((acc, entries) => {
      const level = /** @type {LoggerStringLevel} */ (entries[0]);
      const isEnabled = entries[1];
      if (!isEnabled) {
        return acc;
      }

      acc.push(level);

      return acc;
    }, /** @type {LoggerStringLevel[]} */ ([])),
  setLevel: () => { },
  setLevels: () => { }
};

Create logger

/** @type {LoggerChannels} */
const channels = {
  console: consoleChannel,
  console2: new ConsoleLoggerChannel()
};

const logger = new Logger({
  channels
});

const domainLogger = new DomainLogger({
  logger
});

or

import { Logger, DomainLogger, LoggerFactory } from 'mainlog';

const loggerFactory = new LoggerFactory({
  Logger,
  DomainLogger
});

const logger = loggerFactory.create({
  channels
});

const domainLogger = loggerFactory.createDomain({
  logger
});

Setup logger

/** @type {LoggerLevel} */
const level = 'trace';
/** @type {LoggerStringLevel} */
const levels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];

logger.setup({
  level
});

domainLogger.setup({
  level,
  options: {
    prefix: 'prefix',
    postfix: 'postfix',
    metadata: {
      organization: 'Organization',
      context: 'Context',
      app: 'App',

      sourceClass: 'ClassName'
    }
  }
});

or

logger.setLevels(levels);

or

logger.setLevel(level);

Commands

Call logger

logger.trace('Trace message');
logger.debug('Debug message');
logger.info('Info message');
logger.warn('Warn message');
logger.error('Error message');
logger.fatal('Fatal message');

or

const correlationId = 'requestId';

domainLogger.trace('Trace message', { metadata: { correlationId } });
domainLogger.debug('Debug message', { metadata: { correlationId } });
domainLogger.info('Info message', { metadata: { correlationId } });
domainLogger.warn('Warn message', { metadata: { correlationId } });
domainLogger.error('Error message', { metadata: { correlationId } });
domainLogger.fatal('Fatal message', { metadata: { correlationId } });
1.5.2

6 days ago

1.5.1

10 days ago

1.5.0

20 days ago

1.4.1

2 months ago

1.4.0

2 months ago

1.3.1

2 months ago

1.3.0

2 months ago

1.2.0

2 months ago

1.2.1

2 months ago

1.1.1

2 months ago

1.1.0

3 months ago

1.0.1

5 months ago

1.0.0

5 months ago