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

bog

v1.0.2

Published

Thinnest possible logging

Downloads

3,033

Readme

Simplest Possible Logging

console.log and console.error is really enough and the world has too many log frameworks. This library should not be used, but if you decide to anyway, you get the following:

  • Timestamped log lines in local time zone.
  • Log levels: DEBUG, INFO, WARN, ERROR
  • Possible to redirect.
  • Reasonable defaults.
  • Singleton

Defaults

The default log level is INFO. Debug messages are not shown. Info, warnings and errors are.

By default DEBUG and INFO go to console.log (and thus stdout), while WARN and ERROR go to console.error (thus stderr).

*** 1.0.0 - changed to local time zone. Earlier versions times were always in Zulu.

The default time format is ISO8601 in the local time zone.

Install

npm install bog

Example

var log = require('bog');

log.info('Something wonderful has happened Your AMIGA is alive !!!');

Would produce:

2013-06-13 19:05:35.482 INFO Something wonderful has happened Your AMIGA is alive !!!

API

log.debug(args...)

Same as log.info.

log.info(args...)

Outputs logging at the INFO level. args is one or many arguments which is passed to the output function.

Example

log.info('and, even', 'better...');

Outputs

2013-06-13 19:05:35.482 INFO and even better...

N.b. The above is conceptually the same as

console.log((new Date()).toISOString(), 'INFO', 'and, even', 'better...');

log.warn(args...)

Same as log.info, but to stderr.

log.error(args...)

Same as log.info, but to stderr.

log.level(level)

Sets the lowest reported log level, for example warn would enable warn and error, and disable debug and info.

Example:

log.level('warn');

log.redirect(out, err)

out is the output function for DEBUG and INFO and err is the output function for WARN and ERROR. null is appropriate to turn off output.

Example:

log.redirect(null, null); // silences all logging
...
log.redirect(console.log, console.error); // reinstates defaults

log.callback()

Set a callback function for each log message. The callback will receive an object like this:

{
  "timestamp": 1462947947643,
  "datetime" : "2016-05-11 8:25:47",
  "level"    : "INFO",
  "args"     : ["This is the", "arguments array"]
}

log.config()

Spills the beans of the internal config. Can be used to alter the formatting.

Example (deprecated)

This formatting is deprecated, do not use.

log.config().format = function(level, args) {
    if (level === 'info') {
        args.unshift('Prepended');
        args.push('Appended');
    }
    return args;
};

Enable ISO8601 time designator 'T' and timezone

*** Since 1.0.0

It's possible to turn on the time designator and timezone.

log.config().includeTimeDesignator = true;
log.config().includeTimeZone = true;

log.info('Something wonderful has happened Your AMIGA is alive !!!');

If machine timezone is India this would produce:

2013-06-13T19:05:35.482+0530 INFO Something wonderful has happened Your AMIGA is alive !!!

Notice that zulu (GMT) time is denoted by a 'Z'.

License

MIT License (MIT).