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-instance

v1.6.0

Published

Instance-decorated logging for browser or NodeJS

Downloads

5,637

Readme

log-instance

A minimalistic, extensible logging class that works on the browser or in NodeJS and lets you use the same Javascript code for front- or back-end.

Installation

npm install --save log-instance

Usage

See test/log-instance.js

logInstance()

Complex systems require global and local control over logging. Overall one might care only about warn() and error() messages, but one might, wish to log more detail for a particular object.

To deal with this usecase, logInstance() lets you decorate any object and turn it into a logger with its own logLevel.

var aObj = {name:"A"};
logger.logLevel = 'warn'; // ignore 'info' messages
logger.logInstance(aObj); // decorate aObj with logger methods/props
aObj.logLevel = 'info'; // locally enable 'info' messages
logger.info("Shared logger ignores this message");
aObj.info("A says hello");
console.log(logger.lastLog()); // A says hello
logLevel

There are four logging levels: debug, info, warn and error. The logging level can be set on individual object instances or in the shared LogInstance.singleton.

var logger = LogInstance.singleton;
logger.debug("nobody hears me"); // ignored by default 'info' logLevel
logger.info("hello"); // production message (normal)
logger.warn("oops"); // production message (unusual condition)
logger.error("E_DEATH", "I died"); // production message (fatal condition) throw E_DEATH
log()

A class can decorate instances with a log() method that logs at 'info' level (i.e., "I") and automatically includes the class name.

const { LogInstance } = require('log-instance');

class Koala {
    constructor(opts={}) {
        var logger = opts.logger || LogInstance.singleton;
        logger.logInstance(this);
        this.log('hello world!'); // 20200929 11:24:51 I Koala: hello world!
    }
}

lastLog(level)

Returns most recently logged text for given level.

logger.error("goodbye world");
logger.lastLog("error"); // ... ERROR goodbye world

Example

logLevel (global/instance)

var myUtil = new MyUtility();
myUtil.log("hello world"); // 20200829 17:58:42 I MyUtility: hello world

logger.logLevel = "warn"; // suppress 'info' messages
myUtil.log("nobody hears me!"); // ignored
logger.info("nobody hears us!"); // ignored

myUtil.logLevel = "info"; // override logLevel for instance
myUtil.log("I hear me!"); // 20200829 17:58:42 I MyUtility: I hear me!
logger.info("we're still ignored!"); // ignored

AWS Logging

Suppress timestamp and logging level for AWS CloudWatch logs

require {terseLogger:logger} = require("log-instance");
logger.info("hello"); // No timestamp or logging level in output