Skip to content

Commit

Permalink
fix(utils/logger): prevents logger methodFactory from being registere…
Browse files Browse the repository at this point in the history
…d twice
  • Loading branch information
rafamel committed May 17, 2019
1 parent 5446492 commit 1958d56
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions src/utils/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,23 @@ function prefix(level: TLogger): string {
return (color ? color(`[${name}]`) : `[${name}]`) + ` ${APP_NAME}: `;
}

const factory = logger.methodFactory;
logger.methodFactory = (...args) => (...inner: any[]) => {
factory.call(loglevel, ...args)(
prefix(args[0].toLowerCase() as TLogger) + inner[0],
...inner.slice(1)
);
};
type Factory = loglevel.MethodFactory & { registered?: boolean };
const factory: Factory = logger.methodFactory;

// Prevent method factory to register twice for the same logger
// as it could occur with different instances
if (!factory.registered) {
const methodFactory: Factory = function(...args) {
return (...inner: any[]) => {
factory.call(loglevel, ...args)(
prefix(args[0].toLowerCase() as TLogger) + inner[0],
...inner.slice(1)
);
};
};
methodFactory.registered = true;
logger.methodFactory = methodFactory;
}

// Must be set -at least once- after overwriting methodFactory
logger.setDefaultLevel(DEFAULT_LOG_LEVEL);
Expand Down

0 comments on commit 1958d56

Please sign in to comment.