Skip to content

Latest commit

 

History

History
65 lines (44 loc) · 2.84 KB

README.md

File metadata and controls

65 lines (44 loc) · 2.84 KB

ts-log-class

Codacy Badge Build Status Coverage Status License: MIT npm version

ts-log-class is a helper utility that will add log output for all methods of a class by adding a @log decorator to the class definition. Stop adding console.log or other logging strategies within each method, but have it done for you. This utility was written specifically for test compaitibility as part of the aws-ts-starter.

Install

npm install --save ts-log-class

Usage

import log from "ts-log-class";

@log()
export class Car {
  numWheels: number = 4;

  drive(mph: number): Promise<string> {
    return new Promise(resolve => {
      setTimeout(() => {
        resolve(`Driving ${mph.toString()}mph!`);
      }, 100);
    });
  }
}

See tslogclass.spec.ts for additional usage examples.

Output

The default usage without passing in any configuration options to the log function will return the following, including the result of a Promise.

new Car().drive(32);

console.log output:

{"className":"Car","methodName":"drive","timestamp":1513536484430,"arguments":{"mph": 32},"properties":{"numWheels": 4},"result":"Driving 32mph!"}

Options

The decorator, @log() takes in a configuration object ILogOptions with hook and out properties.

Hook

The hook property is a function implementing the IHookProperties interface. Your method is provided the following properties:

  • className - The name of the class.
  • methodName - The name of the executing function.
  • timestamp - An Epoch of when the Out option function is invoked.
  • arguments - An object with each argument nam as the key, and each argument value as the value.
  • properties - An object with each property name as the key, and each property value as the value.
  • result - The return value of the function. If the result is a Promise, the return value will equal the result of the Promise once it resolves.

Out

By default, console.log, but any function implementing the console.log interface will do: (message?: any, ...optionalParams: any[]) => void