vertex-logger
A logger.
npm install vertex-logger --save
const VertexLogger = ; const logger = root: 'root' name: 'name' level: 'info' // off fatal error warn info debug trace; loggerlevel = 'debug'; // reset level logger;// if stdout is TTY:// [ info] (root/name) interpolated string (201ms)// if not:// 2016-10-21 14:11:31.471 [ info] (root/name) interpolated string (201ms) logger; // to stderrlogger; // to stderrlogger; // to stdoutlogger; // to stdoutlogger; // to stdoutlogger; // to stdout logger;// [error] (root/name) couldn't (1231ms)// Error: Why// at repl:1:25// at sigintHandlersWrap (vm.js:22:35)// at sigintHandlersWrap (vm.js:96:12)// ...
A tree of loggers...
...can be built for context.
let appLogger = root: 'app-name' name: 'application'; let serviceLogger = appLogger; let componentLogger = serviceLogger; //// Log messages only display 'root/name' and not 'root/parent/parent/name'//// eg. componentLogger;// [ info] (app-name/component-name) message (0ms)
A repl
…can be registered via any logger in the tree
let logger = ;let repl = start; loggerrepl = repl; // to register the repl // now the repl prompt will remain continuously below the latest logged message loggerrepl = undefined // to unregister the repl // supports only one repl// repl can be registered at any logger in the tree and will be applied to all
Loglevel functors...
...can be passed as loglevel to target specific components.
let logger = root: 'app-name' name: 'application' { if infoname == 'specific-component' return 'trace'; // defaults to 'info' }; // The level functor is inherited into the tree of loggers// - it overrides log levels passed as string on createLogger() child// - it does not override loglevels passed as functions on createLogger() child // Level by functor can also be directly assigned logger { if infoancestors >= 0 return 'off'; if infoancestors == 'specific-parent' return 'off'; return 'trace';}
Todo
parentLoggerlevelAll == 'off' || fn; // applied to all children