Я пытаюсь использовать winston для входа в мой проект. Чтобы создать новый регистратор, вы обычно делаете:
import winston from 'winston';
const logger = winston.createLogger({ ...opts });
Тем не менее, мои параметры будут практически одинаковыми во всем проекте, за исключением параметра label
, который будет именем модуля, выполняющего ведение журнала. Вместо того, чтобы дублировать код createLogger
в 100 файлах, я хотел бы создать класс-оболочку, который предоставляет наиболее распространенные параметры для createLogger
и позволяет пользователю предоставить один параметр для label
конструктору. Экземпляр класса должен быть экземпляром класса Logger
Уинстона, который является возвращаемым значением createLogger
.
Итак, подведя итог, я хотел бы иметь возможность сделать это:
import OurLogger from './our-logger';
const fooModuleLogger = new OurLogger('foo'); // full winston Logger instance
Мой лучший снимок сейчас на OurLogger.js
будет выглядеть примерно так:
import winston from 'winston';
export default class {
constructor(label = 'defaultLabel') {
const defaultOpts = { ... }
// I know this part is wrong. But what's the right way?
this = winston.createLogger({
label,
...defaultOpts
});
}
}