Have ideas to improve npm?Join in the discussion! »

    log4js-autolog
    TypeScript icon, indicating that this package has built-in type declarations

    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

    9

    Version

    1.0.7

    License

    MIT

    Unpacked Size

    20.4 kB

    Total Files

    9

    Last publish

    Collaborators

    • avatar