File

src/logger.ts

Index

Methods

Constructor

constructor(opts?: Partial<LoggerConfig>)
Defined in src/logger.ts:57
Parameters :
Name Type Optional
opts Partial<LoggerConfig> Yes

Methods

debug
debug(...args: Array)
Defined in src/logger.ts:91
Parameters :
Name Type Optional
args Array<literal type> No
Returns : void
error
error(...args: Array)
Defined in src/logger.ts:79
Parameters :
Name Type Optional
args Array<literal type> No
Returns : void
info
info(...args: Array)
Defined in src/logger.ts:97
Parameters :
Name Type Optional
args Array<literal type> No
Returns : void
warn
warn(...args: Array)
Defined in src/logger.ts:85
Parameters :
Name Type Optional
args Array<literal type> No
Returns : void
import * as consoleLogLevel from 'console-log-level';
import {defaultConfig} from './config';

export type ConsoleLogLevel = 'error' | 'warn' | 'info' | 'debug';
export type LogLevel = 'silent' | ConsoleLogLevel;

/**
 * The list of log levels.
 */
export const LEVELS: ReadonlyArray<LogLevel> = [
  'silent',
  'error',
  'warn',
  'info',
  'debug',
];

export interface LoggerConfig {
  /**
   * The minimum log level that will print to the console.
   */
  level: string | false;

  /**
   * A tag to use in log messages.
   */
  tag: string;
}

function logLevelToName(level?: number): LogLevel {
  if (typeof level === 'string') {
    level = Number(level);
  }
  if (typeof level !== 'number') {
    level = defaultConfig.logLevel;
  }
  if (level < 0) level = 0;
  if (level >= LEVELS.length) level = LEVELS.length - 1;
  return LEVELS[level];
}

export class Logger {
  private logger: consoleLogLevel.Logger | null;

  constructor(opts?: Partial<LoggerConfig>) {
    const levelName =
      opts && opts.level !== undefined
        ? opts.level
        : logLevelToName(defaultConfig.logLevel);

    if (levelName === false || levelName === 'silent') {
      this.logger = null;
      return;
    }

    this.logger = consoleLogLevel({
      stderr: true,
      prefix: `${
        opts && opts.tag ? opts.tag : 'unknown'
      } ${levelName.toUpperCase()}`,
      level: levelName as ConsoleLogLevel,
    });
  }

  error(...args: Array<{}>): void {
    if (this.logger) {
      this.logger.error(...args);
    }
  }

  warn(...args: Array<{}>): void {
    if (this.logger) {
      this.logger.warn(...args);
    }
  }

  debug(...args: Array<{}>): void {
    if (this.logger) {
      this.logger.debug(...args);
    }
  }

  info(...args: Array<{}>): void {
    if (this.logger) {
      this.logger.info(...args);
    }
  }
}

results matching ""

    No results matching ""