tracer icon indicating copy to clipboard operation
tracer copied to clipboard

Independent logger objects with different log levels

Open vineyyadav opened this issue 5 years ago • 2 comments

I want to use this library for a small project where I have two modules. I want to control the logging (primarily the log level) independently and on the fly for the two modules.

Is it possible to get multiple logger objects which are independent?

Something like: module 1 has

const tracer = require('tracer');
const logger = tracer.console({ level: 'debug' });

function setLogLevel(level) {
    tracer.setLevel(level);
}

function m1foo() {
    logger.debug('m1foo:debug');
    logger.info('m1foo:info');
    logger.warn('m1foo:warn');
    logger.error('m1foo:error');
}

module.exports = {
    setLogLevel: setLogLevel,
    m1foo: m1foo
}

module 2 has

const tracer = require('tracer');
const logger = tracer.console({ level: 'debug' });

function setLogLevel(level) {
    tracer.setLevel(level);
}

function m2foo() {
    logger.debug('m2foo:debug');
    logger.info('m2foo:info');
    logger.warn('m2foo:warn');
    logger.error('m2foo:error');
}

module.exports = {
    setLogLevel: setLogLevel,
    m2foo: m2foo
}

And then using them like:

const m1 = require('./m1.js');
const m2 = require('./m2.js');

m1.setLogLevel('warn');

m1.m1foo();
m2.m2foo();

And expecting that the m1.setLogLevel does not change the log level for m2.

vineyyadav avatar Jun 12 '20 08:06 vineyyadav

setLevel method dynamically change the log level. It is a global settings, affect all output that are created via tracer.

a solution that write a config file, like:

const config = {
  module1_level: 'debug',
  module2_level: 'warn'
}

module.exports = config

then use it in module1 and module2

const config = require('./config')
const tracer = require('tracer');
const logger = tracer.console({ level: config.module1_level });

const config = require('./config')
const tracer = require('tracer');
const logger = tracer.console({ level: config.module2_level });

baryon avatar Jun 13 '20 09:06 baryon

I tried it, but does not really help. When changing the log level for one module, it impacted the log level for the other one too.

vineyyadav avatar Jun 19 '20 13:06 vineyyadav