log-pose

Helps you to not get lost

Usage no npm install needed!

<script type="module">
  import logPose from 'https://cdn.skypack.dev/log-pose';
</script>

README

LogPose

NPM version Build status codecov

Helps you to not get lost.

$ npm i log-pose --save
# or `yarn add log-pose`

API

Import the module and retrieve a shared logger instance.

import LogPose from 'log-pose';

// define logging level
LogPose.setLevel('verbose');

// get shared logger instance
const log = LogPose.getLogger();

// calling `newLogger()` returns a single method
const fail = LogPose.newLogger('my-app', 'verbose');
  • pause() — Pause the logging output
  • resume() — Resume the logging output
  • setLevel(type: String|Boolean) — Set a logging level to disable/enable verbs; if false is given logging gets disabled
  • setLogger([stdout: Object]) — Set the standard-output for logging; if any falsy value is given, then the entire logging is disabled. Given stdout is used to output log messages
  • getLogger([depth: Number[, stdout: Object]]) — Returns a shared logger instance; depth is used on status formatting
  • newLogger(prefix: String[, level: String|Number[, depth: Number, stdout: Object]]) — Returns a single logging method; actually, the shared logger is built from those methods. Methods are prefixed and receive a base level and depth; their output is skipped if given level is above the currently defined

Log levels are info, debug and verbose.

Logger

It's a function that can print statuses:

// single status
log('testing');

// prefixed status
log('kind', 'value');

// async status
async function main() {
  // single task delayed
  await log('long task', () => new Promise(resolve => setTimeout(resolve, 1000)));

  // prefixed task delayed
  await log('kind', 'value', () => new Promise(resolve => setTimeout(resolve, 1000)));

  // prefixed task delayed, with callback
  await log('write', 'filepath', done => setTimeout(() => {
    // custom feedback on logs
    done('filepath', 'failed', 'fail');
  }, 1000));
}

main();

Also, it have some methods:

  • printf(...) — Prints always, with formatting enabled
  • write(...) — Prints always, without formatting
  • info(...) — Prints if level is > 0
  • debug(...) — Prints if level is >= 1
  • verbose(...) — Prints if level is >= 2
  • isInfo() — Returns true if level is > 0
  • isDebug() — Returns true if level is >= 1
  • isVerbose() — Returns true if level is >= 2
  • isEnabled() — Returns true if level is > 0

Formatting works calling built-in util.format() on printing, e.g.

log.info('{%info.bgBlue.white Text with spaces and values: %s%}\n', 42);

Available symbols are:

  • tick → ✔
  • cross → ✖
  • star → ★
  • line → ─
  • info → ➲
  • reload → ↺
  • pointer → ›
  • warning → ⚠

Built-in types are:

  • exceptionline.bgRed.bold
  • featuredstar.bgBlue.bold
  • failurewarning.bgRed.white
  • successline.green
  • errorline.red
  • tipstar.yellow
  • linkline.cyan
  • itemline.gray
  • warnwarning.bold
  • infoinfo.blue
  • failcross.red
  • waitreload.gray
  • endtick.cyan
  • logpointer.gray
  • oktick.green

Using these you can short your code:

log.info('{%ok Text with spaces and values: %s%}\n', 42);

Color names are defined by Chalk.