Вход в отдельный поток в Node.js с помощью Winston

#javascript #node.js #multithreading #logging #winston

#javascript #node.js #многопоточность #регистрация #winston

Вопрос:

Можно ли делегировать ведение журнала отдельному потоку в 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');

  

Кто-нибудь пытается сделать то же самое?

Знаете ли вы какие-либо ограничения?

Поможет ли это повысить производительность?