ts-log
Abstract logger TypeScript interface with a dummy logger that does nothing, useful for libraries.
Last updated 2 years ago by kallaspriit .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ npm install ts-log 
SYNC missed versions from official npm registry.

TypeScript Abstract Logger

Travis Coverage Downloads Version License

Abstract logger TypeScript interface along with a dummy logger that does nothing.

Useful for libraries wanting to provide a pluggable logger that does nothing by default (or provide your own default such as bunyan).

  • Matches the built-in console that can be used directly.
  • Also matches bunyan.
  • Provides usage and custom logger example.
  • Written in TypeScript, no need for extra typings.
  • No dependencies, 24 LOC with comments, 100% test coverage.

Installation

This package is distributed via npm

npm install ts-log
yarn add ts-log

Example

import { dummyLogger, Logger } from "ts-log";
import * as fs from "fs";

// example class that uses the logger
class Calculator {
  // accept the logger in the constructor, defaulting to dummy logger that does nothing
  public constructor(private readonly log: Logger = dummyLogger) {}

  public sum(a: number, b: number) {
    const result = a + b;

    // call the logger
    this.log.info(`summing ${a} + ${b} = ${result}`, a, b, result);

    return result;
  }
}

// example custom logger that logs to a file
class FileLogger implements Logger {
  private readonly fd: number;

  public constructor(filename: string) {
    this.fd = fs.openSync(filename, "a");
  }

  public trace(message?: any, ...optionalParams: any[]): void {
    this.append("TRACE", `${message} ${JSON.stringify(optionalParams)}`);
  }

  public debug(message?: any, ...optionalParams: any[]): void {
    this.append("DEBUG", `${message} ${JSON.stringify(optionalParams)}`);
  }

  public info(message?: any, ...optionalParams: any[]): void {
    this.append("INFO ", `${message} ${JSON.stringify(optionalParams)}`);
  }

  public warn(message?: any, ...optionalParams: any[]): void {
    this.append("WARN ", `${message} ${JSON.stringify(optionalParams)}`);
  }

  public error(message?: any, ...optionalParams: any[]): void {
    this.append("ERROR", `${message} ${JSON.stringify(optionalParams)}`);
  }

  private append(type: string, message: string) {
    fs.writeSync(this.fd, `${new Date().toISOString()} ${type} ${message}\n`);
  }
}

// don't define a logger, defaults to dummy logger that does nothing
const calculator1 = new Calculator();

// use the built-in console as the logger
const calculator2 = new Calculator(console);

// use the custom file logger
const calculator3 = new Calculator(new FileLogger("log.txt"));

// run the calculator
calculator1.sum(2, 3);
calculator2.sum(-4, 1);
calculator3.sum(6, 3);

Commands

  • npm start to start the example application.
  • npm run build to build the production version.
  • npm run test to run tests.
  • npm run coverage to gather code coverage.
  • npm run lint to lint the codebase.
  • npm run prettier to run prettier.
  • npm run validate to run all pre-commit checks (prettier, build, lint, test)

Current Tags

  • 2.2.5                                ...           latest (2 years ago)

15 Versions

  • 2.2.5                                ...           2 years ago
  • 2.2.4                                ...           3 years ago
  • 2.2.3                                ...           4 years ago
  • 2.2.0                                ...           4 years ago
  • 2.1.4                                ...           6 years ago
  • 2.1.3                                ...           6 years ago
  • 2.1.2                                ...           6 years ago
  • 2.1.1                                ...           6 years ago
  • 2.1.0                                ...           6 years ago
  • 2.0.0                                ...           6 years ago
  • 1.2.1                                ...           7 years ago
  • 1.2.0                                ...           7 years ago
  • 1.1.1                                ...           7 years ago
  • 1.1.0                                ...           7 years ago
  • 1.0.0                                ...           7 years ago
Maintainers (1)
Downloads
Total 0
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (0)
None
Dev Dependencies (11)

© 2010 - cnpmjs.org x YWFE | Home | YWFE