0.4.1 • Published 6 years ago

ts-perf-logger v0.4.1

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

ts-perf-logger

ATTENTION: Some breaking changes were introduced with version 0.4.0:

  • method getActionId was renamed to getCurrentActionId
  • method setActionId was renamed to setCurrentActionId (and the internals changed a bit)
  • method logPerfInit changed signature
  • method logPerformance (rxjs operator) can now receive an 'actionId' parameter

Installation

To install this library, run:

$ npm install ts-perf-logger --save

Consuming your library

Once you have installed your library from npm, you can import it in any Typescript application by running:

import { PerfLogManager,
         LogPerformance,
         DisableLogPerformance } from 'ts-perf-logger';

Once your library is imported, you can use its @Decorators in your application.

Use it with a class decorator:

@LogPerformance()
export class AppModule { 
  
  foo() {
    // ... do some work ...
  }

  @DisableLogPerformance()
  bar() {
    // ... do some work ...
  }
  
}

or with a method decorator:

export class AppModule { 

  @LogPerformance()
  foo() {
    // ... do some work ...
  }

}

or using the static logPerfInit() and logPerfEnd() methods:

export class AppModule { 

  foo() { 
    PerfLogManager.logPerfInit('foo');
    try {
      // ... do some work ...
      PerfLogManager.logPerfEnd('foo', true);
    } catch (error) {
      PerfLogManager.logPerfEnd('foo', false);
    }
  }

}

If you want / need to specify a unique ActionId for a group of method calls you can do so like the following. If setActionId is set, all subsequent function calls will reference this Id until it is cleared or changed:

@LogPerformance()
export class AppModule { 
  
  foo() {
    PerfLogManager.setActionId('action_unique_id');
    // ... do some work, call other functions ...
  }

  @DisableLogPerformance()
  bar() {
    // ... do some work ...
  }
  
}

or

export class AppModule { 

  constructor() {
    PerfLogManager.setActionId(0);
  }

  @LogPerformance()
  foo() {
    PerfLogManager.setActionId(PerfLogManager.getActionId() + 1);
    // ... do some work, call other functions ...
  }

}

or

export class AppModule { 

  foo() { 
    PerfLogManager.logPerfInit('foo', 'my_action_id');
    try {
      // ... do some work, call other functions ...
      PerfLogManager.logPerfEnd('foo', true);
    } catch (error) {
      PerfLogManager.logPerfEnd('foo', false);
    }
  }

}

To Log the performance of Observables (from the moment it's subscribed to to the moment it first emits - useful for Observables that emit only once and complete like HTTP requests):

  usingOperatorOnObservable() {
    this.observable()
    .logPerformance('key')
    .subscribe(() => { /* do something else */ });
  }

To get the statistics for all executed methods call:

PerfLogManager.getStatistics()

Development

To generate all *.js, *.d.ts and *.metadata.json files:

$ npm run build

To lint all *.ts files:

$ npm run lint

License

MIT © Nuno Freire

0.4.1

6 years ago

0.4.0

6 years ago

0.3.6

6 years ago

0.3.5

6 years ago

0.3.4

6 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.5

7 years ago