Logger that can be used to emit traces.

The class supports adding multiple loggers for different targets. A default logger (identifier "default") is added on startup which logs to "console".

Usage:

const facility = Logger.get("loggerName"); facility.debug("My debug message", "my extra value to log");

The configuration of the default logger can be adjusted by using the static properties of the Logger class:

  • Logger.defaultLogLevel sets the default log level for all the facility
  • Logger.logLevels = { loggerName: Level.DEBUG } can set the level for the specific loggers
  • Logger.format = Format.ANSI enables colorization via ANSI escape sequences in default formatter

For additional loggers, use Logger.addLogger() to add a new logger with a specific identifier. Afterwards the configuration of these can be adjusted using static methods with the identifier as first parameter:

  • Logger.setFormatForLogger("loggerName", Format.ANSI)
  • Logger.setLogLevelsForLogger("loggerName", { loggerName: Level.DEBUG })
  • Logger.setDefaultLoglevelForLogger("loggerName", Level.DEBUG)

Constructors

  • Parameters

    • name: string

    Returns Logger

Properties

debug: ((...values: any[]) => void)
error: ((...values: any[]) => void)
fatal: ((...values: any[]) => void)
info: ((...values: any[]) => void)
notice: ((...values: any[]) => void)
warn: ((...values: any[]) => void)
logger: LoggerDefinition[]
nestingLevel: number

Accessors

  • get defaultLogLevel(): LogLevel
  • Get default loglevel for the default logger.

    Returns LogLevel

  • set defaultLogLevel(level): void
  • Set default loglevel for the default logger.

    Parameters

    Returns void

  • set format(format): void
  • Set logFormatter using configuration-style format name.

    Parameters

    • format: string

      the name of the formatter (see Format enum)

    Returns void

  • set level(level): void
  • Set log level using configuration-style level name for the default logger.

    Parameters

    • level: string | number

    Returns void

  • get log(): ((level: LogLevel, formattedLog: string) => void)
  • Get the log function for the default logger.

    Returns ((level: LogLevel, formattedLog: string) => void)

      • (level, formattedLog): void
      • Parameters

        Returns void

  • set log(log): void
  • Set the log function for the default logger.

    Parameters

    • log: ((level: LogLevel, formattedLog: string) => void)

      The log function to set

        • (level, formattedLog): void
        • Parameters

          Returns void

    Returns void

  • get logFormatter(): ((now: Date, level: LogLevel, facility: string, nestingPrefix: string, values: any[]) => string)
  • Get the log formatter for the default logger.

    Returns ((now: Date, level: LogLevel, facility: string, nestingPrefix: string, values: any[]) => string)

      • (now, level, facility, nestingPrefix, values): string
      • Parameters

        • now: Date
        • level: LogLevel
        • facility: string
        • nestingPrefix: string
        • values: any[]

        Returns string

  • set logFormatter(logFormatter): void
  • Set the log formatter for the default logger.

    Parameters

    • logFormatter: ((now: Date, level: LogLevel, facility: string, nestingPrefix: string, values: any[]) => string)
        • (now, level, facility, nestingPrefix, values): string
        • Parameters

          • now: Date
          • level: LogLevel
          • facility: string
          • nestingPrefix: string
          • values: any[]

          Returns string

    Returns void

  • get logLevels(): {
        [facility: string]: LogLevel;
    }
  • Get facility loglevels for the default logger.

    Returns {
        [facility: string]: LogLevel;
    }

  • set logLevels(levels): void
  • Set facility loglevels for the default logger.

    Parameters

    • levels: {
          [facility: string]: LogLevel;
      }

      The levels to set

    Returns void

Methods

  • Add additional logger to the list of loggers including the default configuration.

    Parameters

    • identifier: string
    • logger: ((level: LogLevel, formattedLog: string) => void)
        • (level, formattedLog): void
        • Parameters

          Returns void

    • Optionaloptions: {
          defaultLogLevel?: LogLevel;
          logFormat?: string;
          logLevels?: {
              [facility: string]: LogLevel;
          };
      }
      • OptionaldefaultLogLevel?: LogLevel
      • OptionallogFormat?: string
      • OptionallogLevels?: {
            [facility: string]: LogLevel;
        }

    Returns void

  • Invoke logic and return any log messages produced.

    Parameters

    • fn: (() => void)
        • (): void
        • Returns void

    • OptionalfromLogger: string

    Returns {
        level: LogLevel;
        message: string;
    }[]

  • Create a new facility.

    Parameters

    • name: string

      the name of the facility

    Returns Logger

    a new facility

  • Get the logger with the matching identifier.

    Parameters

    • identifier: string

      The identifier of the logger

    Returns LoggerDefinition

  • Mask a string with a given character. If unmaskedLength is provided then these number of characters will be shown unmasked.

    Parameters

    • str: string

      String to mask

    • OptionalmaskChar: string

      character to mask with

    • OptionalunmaskedLength: number

      number of characters to show unmasked in the beginning

    Returns string

  • Perform operations in a nested logging context. Messages will be indented while the context executes.

    Type Parameters

    • T

    Parameters

    • context: (() => T)
        • (): T
        • Returns T

    Returns T

  • Async version of nest().

    Parameters

    • context: (() => Promise<any>)
        • (): Promise<any>
        • Returns Promise<any>

    Returns Promise<any>

  • Parameters

    • identifier: string

    Returns void

  • Unhandled error reporter.

    Some environments do not report full error details such as Error#cause and AggregateError#errors.

    To ensure these details are always recorded somewhere, unhandled errors may be reported here.

    To disable this behavior replace this function.

    Parameters

    • error: Error

    Returns void

  • Set default loglevel for the logger with the matching identifier.

    Parameters

    • identifier: string

      The identifier of the logger

    • level: LogLevel

      The level to set

    Returns void

  • Set logFormatter using configuration-style format name for the logger with the matching identifier.

    Parameters

    • identifier: string

      The identifier of the logger

    • format: string

      the name of the formatter (see Format enum)

    Returns void

  • Set the log formatter for the logger with the matching identifier.

    Parameters

    • identifier: string

      The identifier of the logger

    • logFormatter: ((now: Date, level: LogLevel, facility: string, nestingPrefix: string, values: any[]) => string)

      The log formatter to set

        • (now, level, facility, nestingPrefix, values): string
        • Parameters

          • now: Date
          • level: LogLevel
          • facility: string
          • nestingPrefix: string
          • values: any[]

          Returns string

    Returns void

  • Set the log function for the logger with the matching identifier.

    Parameters

    • identifier: string

      The identifier of the logger

    • log: ((level: LogLevel, formattedLog: string) => void)

      The log function to set

        • (level, formattedLog): void
        • Parameters

          Returns void

    Returns void

  • Set facility loglevels for the logger with the matching identifier.

    Parameters

    • identifier: string

      The identifier of the logger

    • levels: {
          [facility: string]: LogLevel;
      }

      The levels to set

    Returns void

  • Stringify a value (BigInt aware) as JSON.

    Parameters

    • data: any

      the value to stringify

    Returns string

    the stringified value