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

ansi-logger

v4.4.4

Published

Console logger with support for colors and log levels, it complies to the default console.log interface, with methods like log,error,warn,debug and extended with some extra levels for nice formatting purposes.

Downloads

499

Readme

ANSI Logger for Node.js

Console logger with support for colors and log levels, it complies to the default console.log interface, with methods like log,error,warn and debug but is extended with some extra levels for nice formatting purposes.

API - AnsiLogger<E>

AnsiLogger<E>(options: Partial<Options>)

Set options changes the internal setting of the logger and the behavior will change after this call. if you change the log levels to output the new mask of log levels is outputted to the INFO level, so if INFO level isn't in the new log level mask, nothing will be outputted.

AnsiLogger.setOptions(options: Partial<Options>): void

See constructor description

AnsiLogger.error(msg1 [, msg2,..]): msg1

Log to the error level, iff the ERROR mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.warn(msg1 [, msg2,..]): msg1

Log to the warn level, iff the WARN mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.success(msg1 [, msg2,..]): msg1

Log to the success level, iff the SUCCESS mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.log(msg1 [, msg2,..]): msg1

Log to the log level, iff the LOG mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.info(msg1 [, msg2,..]): msg1

Log to the info level, iff the INFO mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.debug(msg1 [, msg2,..]): msg1

Log to the debug level, iff the DEBUG mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.verbose(msg1 [, msg2,..]): msg1

Log to the verbose level, iff the VERBOSE mask is present in the log level mask of the logger the message(s) will be outputted and formatted as an error.

AnsiLogger.print(msg, [loglevel, color, style]): void

Output to stdout or stderr if the loglevel is ERROR

AnsiLogger.formatTypes(msg, [padding = 0, depth = 3]): E

Recursively format msg. It is nice to format Object and arrays with. You can set depth in order to avoid infinite recursion.

AnsiLogger.formatError(err: Error): void

Formats an error, you can use e.g. in a try/catch block pass the error to formatError and it will output it to ERROR log level.

API - TextTransformer

TextTransformer(options: Partial<Options>)

A transformer, that "pretty prints" to human readable format.

TextTransformer.format(entry: LogEntry): string

Transform a LogEntry to to string output.

TextTransformer.setOptions(options: Partial<Options>): void

Setting new options on the transformer. Can be used to disable/enable colors or changing the colors.

API - JSONTransformer

JSONTransformer()

A transformer that JSON serializes LogEntry, this is great when using log services like log stash.

JSONTransformer.format(entry: LogEntry): string

Transformats LogEntry to JSON string.

API - IdentityTransformer

IdentityTransformer()

Transformer that does nothing, it is useful when implementing custom outputters.

IdentityTransformer.format(entry: LogEntry): LogEntry

Returns the LogEntry as is.

Log level system

The log level system is based on bit masks, with pre-compiled set of log levels.

Level masks

ERROR:    0b0000001
WARN:     0b0000010
SUCCESS:  0b0000100
LOG:      0b0001000
INFO:     0b0010000
DEBUG:    0b0100000
VERBOSE:  0b1000000

This way it's easy to compile a custom level mask, all you have to do is bit-wise or the masks together for the levels you want in your output.

E.g. if we only want ERROR and INFO outputted:

const Logger = require('ansi-logger');
const logLevel = Logger.Mask.ERROR | Logger.Mask.INFO;
const logger = new Logger.AnsiLogger({ logLevel: logLevel });

logger.error('test');
logger.warn('test');
logger.success('test');
logger.log('test');
logger.info('test');
logger.debug('test');
logger.verbose('test');

Output:

[2017-10-01 17:41:26.052+0200] [ERROR]   test
[2017-10-01 17:41:50.807+0200] [INFO]    test

Pre-compiled log level masks

SILENT
ERROR
WARN
SUCCESS
LOG
INFO
DEBUG
VERBOSE

Each of the levels listed above will output their own level and them above. So LOG will output ERROR,WARN,INFO and LOG.

AnsiLogger.Options

group default: null

Sets the group name added to all log entries, produceed by this instance.

logLevel default: Logger.Level.INFO

Sets the log level of the logger. NB! if the default log level is used, no [level] indication is outputted, this will behavior will be optional in a later release.

outputters default: {err: process.stderr.write, out: process.stdout.write}

An object containing err and out which are functions that consumes the transformed output and writes it to the output medium, e.g. stdout and stederr. But it very well can output to files instead.

timeformat default: YYYY-MM-DD HH:mm:ss.SSSZZ

A momemnt format string used to format the timestamp in the log entries.

transformer default: new Logger.TextTransformer()

An object that can transform [LogEntry] objects to string

TextTransformer.Options

colorMap default:

{
  ERROR: clc.bgRed.white,
  WARN: clc.red.bold,
  SUCCESS: clc.green,
  LOG: clc,
  INFO: clc.blue,
  DEBUG: clc.yellow,
  VERBOSE: clc.magenta,
  GROUP: clc.yellow,
  TIME: clc.cyan,
}

colors default: true

Whether colors are enabled or not. Even if colors are enabled, the output are not necessarily printed in colors, if the the output target is not a tty. This behavior can be mitigated, by using the forceColors option.

forceColors default: false

Whether or not colors always should be used.

const clc = require('cli-color')
const Logger = require('ansi-logger');
const logger = new Logger.AnsiLogger({
  transformer: new Logger.TextTransformer({
    'colors': {
      'ERROR': clc.bgMagenta
    }
  }
});
const logger = new Logger.AnsiLogger({'group': 'server'});
logger.log('test');

Outputs:

[2017-01-01 17:44:35.443+0000] [server] test

Build

For building a new version simply run. NB! It is required that coffee-script is globally installed.

npm run build