Как указать разные файлы журнала для каждой записи журнала

У меня есть следующий скрипт, который работает как модуль регистрации для других скриптов в моем приложении:

logger.js

winston = require('winston');

var fileLog =  new (winston.Logger)({
    transports:[
        new (winston.transports.File)({filename: filename.log})
    ]
});

module.exports.fileLog = fileLog;

Я использую этот модуль регистрации в сценариях следующим образом:

script.js

var logger = require('./logger');
logger.fileLog.log('info','Chill winston');

Прямо сейчас все записи журнала сохраняются в filename.log, но я хотел бы иметь возможность указывать другой файл журнала каждый раз, когда я записываю запись из script.js

Является ли это возможным? Заранее спасибо.

1 ответ

Решение

Мне удалось решить эту проблему с помощью пользовательской функции в моем модуле регистрации.

logger.js

winston = require('winston');

function fileLogF(filename,level,msg) {
    if(typeof fileLog == 'undefined' || (fileLog.transports.file.filename)!= filename){
        fileLog =  new (winston.Logger)({
            transports:[
                new (winston.transports.File)({filename: filename,json:false }),
            ],
        })
    }
    fileLog.log(level,msg);
}

Теперь я могу указать файл журнала при создании записи журнала:

script.js

var logger = require('./logger');
logger.fileLog('filename.log','info','Chill winston');
Другие вопросы по тегам