npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

log-pose

v0.4.9

Published

Helps you to not get lost

Downloads

175

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.