Giter Site home page Giter Site logo

Comments (2)

philtre avatar philtre commented on June 13, 2024

It's a bug.

Let's say you have create three extensions, One, Two, and Three:

const logger = createLogger();

const oneLogger = logger.extend('One');
const twoLogger = logger.extend('Two');
const threeLogger = logger.extend('Three');

oneLogger.debug('1'); // outputs 'One | DEBUG: 1'
twoLogger.debug('2'): // outputs 'Two | DEBUG: 2'
threeLogger.debug('3'): // outputs 'Three | DEBUG: 3'

There's an _enabledExtensions property, which is initially null. When null, all extensions are considered enabled.
Disabling an extension does not modify this property, if it is null:

logger.disable('One');
oneLogger.debug('1'); // outputs 'One | DEBUG: 1'
twoLogger.debug('2'): // outputs 'Two | DEBUG: 2'
threeLogger.debug('3'): // outputs 'Three | DEBUG: 3'

However, as soon as you explicitly enable one extension, _enabledExtensions becomes an array (eg. ['One']). The problem is, this disables all other extensions, which then have to be enabled explicitly.

logger.enable('One');

oneLogger.debug('1'); // outputs 'One | DEBUG: 1'
twoLogger.debug('2'): // no output
threeLogger.debug('3'): // no output

logger.enable('Three');
logger.disable('One');

oneLogger.debug('1'); // no output
twoLogger.debug('2'): // no output
threeLogger.debug('3'): // outputs 'Three | DEBUG: 3'

One way around this is to call enable() on at least one extension, but that might be unpredictable.

Another way is to pass enabledExtensions: [] to the config. This will initially disable all extensions and you'll have to enable them individually.

const config = {
  // ... other config values,
  enabledExtensions: [],
};
const logger = createLogger(config);

const oneLogger = logger.extend('One');
const twoLogger = logger.extend('Two');
const threeLogger = logger.extend('Three');

oneLogger.enable();
twoLogger.enable();

oneLogger.debug('1'); // outputs 'One | DEBUG: 1'
twoLogger.debug('2'): // outputs 'Two | DEBUG: 2'
threeLogger.debug('3'): // no output

from react-native-logs.

alessandro-bottamedi avatar alessandro-bottamedi commented on June 13, 2024

Fixed with b480c93

from react-native-logs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.