ts-perf-logger
v0.4.1
Published
## ATTENTION: Some breaking changes were introduced with version 0.4.0:
Downloads
4
Maintainers
Readme
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