UNPKG

839 BPlain TextView Raw
1import { Injector, Scope } from 'typed-inject';
2import { commonTokens } from '@stryker-mutator/api/plugin';
3import { LoggerFactoryMethod, Logger } from '@stryker-mutator/api/logging';
4import log4js from 'log4js';
5
6export function provideLogger(injector: Injector): LoggerProvider {
7 return injector.provideValue(commonTokens.getLogger, log4js.getLogger).provideFactory(commonTokens.logger, loggerFactory, Scope.Transient);
8}
9export type LoggerProvider = Injector<{ [commonTokens.getLogger]: LoggerFactoryMethod; [commonTokens.logger]: Logger }>;
10
11// eslint-disable-next-line @typescript-eslint/ban-types
12function loggerFactory(getLoggerMethod: LoggerFactoryMethod, target: Function | undefined) {
13 return getLoggerMethod(target ? target.name : 'UNKNOWN');
14}
15loggerFactory.inject = [commonTokens.getLogger, commonTokens.target] as const;