Nectar of the Programming Masses
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

log4js-autolog

1.0.7 • Public • Published

log4js-autolog

A TypeScript method decorator for log4js, just decorate the method to generate a log before/after execution

NPM version Build status Test coverage

How to use it

import * as Log4js from "log4js";
import {autolog} from "log4js-autolog";
 
const logger = Log4js.getLogger("Foo");
logger.level = 'debug';
 
class Foo {
  private logger = logger;
 
  @autolog(logger)
  public greet(name: string) {
    return `Hello: ${name}`;
  }
 
  @autolog(logger, {timer: true})
  public async asyncGreet(name: string) {
    return Promise.resolve(`Hello: ${name}`);
  }
 
  // note "logger" is a string, it will get the logger by calling this["logger"]
  @autolog("logger", {errLevel: "error"})
  public getLength(name: string) {
    return name.length;
  }
}
 
async function main() {
  const f = new Foo();
  f.greet("Turing");
  await f.asyncGreet("Turing");
  try {
    // @ts-ignore
    f.getLength(null);
  } catch (err) {
    // console.log(err);
  }
}
 
main();
>>>> OUTPUT >>>>
[DEBUG] Foo - Foo.greet('Turing') => 'Hello: Turing'
[DEBUG] Foo - async Foo.asyncGreet('Turing') called
[DEBUG] Foo - async Foo.asyncGreet('Turing') (0ms) => 'Hello: Turing'
[ERROR] Foo - Foo.getLength(null) => TypeError: Cannot read property 'length' of null

Usage

@autolog(logger, opt)
  • logger can be a Log4js.Logger or a string. If it is a string, it is assumed to be a property name of the object, i.e. we call this[logger] to get the real logger.
  • opt is optional and contains the following optional fields
    • enterOnly: if true, log before calling the function, return value (and error) will be ignored
    • ignorePromise: if true, will NOT track promise resolve/reject (the default value is false and it will track both Promise.resolve and reject)
    • level: a string, the log level, default is "debug"
    • errLevel: a string, the log level when exception thrown, default is "warn"
    • timer if true, will include the total execution time in the log message, only valid for async or promise result

Install

npm i log4js-autolog

DownloadsWeekly Downloads

7

Version

1.0.7

License

MIT

Unpacked Size

20.4 kB

Total Files

9

Last publish

Collaborators

  • avatar