Можно ли делегировать ведение журнала отдельному потоку в NodeJS с помощью Winston из коробки?
Я хочу минимизировать операции блокировки и другие побочные эффекты для производительности.
И я думаю оперемещение регистрации в отдельный поток.
const winston = require('winston');
const { Worker, isMainThread, workerData } = require('worker_threads');
class MyLogger
{
info(message) {
if (isMainThread) {
this.thread = new Worker(__filename)
} else {
this.getLoggerInstance().info(message);
}
}
getLoggerInstance() {
if (! this.logger) {
this.logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
}
return this.logger;
}
}
// USAGE
const myLogger = new MyLogger();
myLogger.info('something I want to log');
Кто-нибудь пытается сделать то же самое?
Знаете ли вы какие-либо ограничения?
Поможет ли это для производительности?