@giancosta86/unified-logging
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

unified-logging

Universal, minimalist logging for TypeScript

GitHub CI npm version MIT License

Overview

The core of unified-logging is the Logger interface for TypeScript, designed to be used in client code - especially libraries - without depending on a specific logging technology.

Furthermore, this package includes a variety of utility classes that can simplify your logging infrastructure.

Installation

npm install @giancosta86/unified-logging

or

yarn add @giancosta86/unified-logging

The public API entirely resides in the root package index, so you shouldn't reference specific modules.

Usage

Just import names from the package index:

import {...} from "@giancosta86/unified-logging"

Logger

The Logger interface provides just a few core methods:

  • debug(message: string)

  • info(message: string)

  • warn(message: string)

  • error(message: string)

This is all you need to start working with the library: for example, you might declare a constructor expecting a Logger instance among other options - thus letting clients choose the actual implementation.

For example:

import { Logger } from "@giancosta86/unified-logging";

function doSomething(logger: Logger): void {
  logger.info("Starting operation...");

  //More code...

  logger.info("Done!");
}

//Console supports the Logger interface!
doSomething(console);

ArrayLogger

Class implementing Logger by storing the received messages into string[] fields inspectable via read-only properties - for example, debugMessages. Especially useful for testing.

FilterLogger

Logger implementation acting as a filter between the client code and another logger; it is based on the LogLevel enum, and is especially useful to add filtering to the global console object. For example:

const filteredConsole = new FilterLogger(console).setLevel(LogLevel.Warn);

//...some code later...

filteredConsole.info("This will not be displayed!");

CompositeLogger

Logger implementation that forwards each message to all of its sub-loggers.

Compatibility

This library is currently tested with:

It is because of TypeScript's structural typing that the Logger interface actually supports any logger instance providing its methods - with no need for explicit implementation.

/@giancosta86/unified-logging/

    Package Sidebar

    Install

    npm i @giancosta86/unified-logging

    Weekly Downloads

    0

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    17.2 kB

    Total Files

    29

    Last publish

    Collaborators

    • giancosta86