Вход в отдельный поток в Node.js с Winston - PullRequest
0 голосов
/ 23 апреля 2019

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

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

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

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

...