loglevel-mixin
Injects methods named after a set of logLevels which are only forwarding messages. If the current logLevel is higher or equal to the logLevel the name of the called method reflects.
So the model object itself can be used as a logger and the log level is directly attaches to the model
usage
import { defineLogLevelProperties, defineLoggerMethods } from 'loglevel-mixin';
let someObject = {
log(level, message) {
console.log(`${level} ${message}`);
}
};
defineLoggerMethods(someObject);
defineLogLevelProperties(someObject);
someObject.logLevel = 'error';
someObject.info(
level => 'my info message (not reported since logLevel is error)'
);
someObject.logLevel = 'info';
someObject.info(
level => 'my info message (reported since logLevel is now info)'
);
works for ES2015 classes to
import { LogLevelMixin } from 'loglevel-mixin';
const LoggingEnabledClass = LogLevelMixin(
class BaseClass {
log(level, message) {
console.log(`${level} ${message}`);
}
}
);
const someObject = new LoggingEnabledClass();
someObject.logLevel = 'error';
someObject.info(
level => 'my info message (not reported since logLevel is error)'
);
someObject.logLevel = 'info';
someObject.info(
level => 'my info message (reported since logLevel is now info)'
);
install
With npm do:
npm install loglevel-mixin
API
Table of Contents
Logger
Type: Function
Properties
Loglevel
Type: Object
Properties
defaultLogLevels
default log levels
- trace
- debug
- info
- notice
- warn
- error
- crit
- alert
declareLevels
Generate the loglevel objects out of a list of log level names.
Parameters
list
Array<string> A list of log level names. The last name in the list will become the one with the highest priority.
Returns Object levels object a hash with all the loglevels. Stored by there name.
defineLoggerMethods
Adds logging methods to an existing object.
For each loglevel a method with the name of the log level will be created.
Parameters
object
Object target where to assign properties tologLevels
Object Hash with all the available loglevels. Stored by there name (optional, default defaultLogLevels
)theFunction
Logger to be added under the loglevel name.
This function will only be called if the current loglevel is greater equal
the log level of the called logging function.
By default a method log(level,message) will be used (optional, default undefined
)
Examples
defineLoggerMethods( obj)
obj.info('info entry');
obj.error('error entry');
Returns undefined
LOGLEVEL
symbol holding the actual logLevel inside of the target object
LogLevelMixin
Parameters
superclass
class class to be extendetlogLevels
Object Object with all the available loglevels. Stored by their name (optional, default defaultLogLevels
)defaultLogLevel
string the default value for the logLevel property (optional, default defaultLogLevels.info
)
Examples
import { LogLevelMixin } = from 'loglevel-mixin';
class BaseClass {
log(level, message) { console.log(`${level} ${message}`); }
}
class LoggingEnabledClass extends LogLevelMixin(BaseClass) {
}
Returns class newly created class ready to be further extendet/used
defineLogLevelProperties
Declares two properties:
Parameters
object
Object target where the properties will be written intologLevels
Object Hash with all the available loglevels. Stored by there name (optional, default defaultLogLevels
)defaultLogLevel
string the default value for the properties (optional, default defaultLogLevels.info
)
Properties
makeLogEvent
Helper function to aggregate values into a log event
Parameters
level
string log levelarg
(string | Object) original log message - level may be overwrittenargs
Object? additional values to be merged into the final log event - values have precedence
Returns Object suitable for log event processing
license
BSD-2-Clause