Search code examples
node.jswinston

how to get logger name inside winston custom transport function?


I have two loggers:

 var category1 = winston.loggers.get('category1');
 var category2 = winston.loggers.get('category2');

And i need to get their custom names (or default).

CustomLogger.prototype.log = function (level, msg, meta, callback) {
   // i need logger name here! (category1 or category2 or undefined / default)
}

How is the right way to do it?

thanks


Solution

  • As a hotfix ..

    // fix to get logger name as metadata
    var originalGetLogger = winston.Container.prototype.get // winston.loggers.get(loggerName);
    winston.Container.prototype.get = function(loggerName,options){
        var logger = originalGetLogger.call(winston.loggers,loggerName,options)
        logger.rewriters.push(function(level, msg, meta) {
            meta._l = loggerName;
            return meta;
        });
        return logger;
    }
    

    im overriding get fn to add rewriter, and with rewriter im adding logger name to metadata.

    // now each log will insert LOGGERNAME to meta
    var loggerA = winston.loggers.get('LOGGERNAMEA'); 
    var loggerB = winston.loggers.get('LOGGERNAMEB');
    

    if there is something better let me know. thanks.