Visual CLI logger for NodeJS
This is a simple logger that combines in-place terminal updates for showing things like progress, spinners, etc.
Demo as used in fyn:
npm install visual-loggerLog lines scroll normally. Items are the in-place part: each one owns a line at the bottom of the screen that you update as work progresses, and removing it leaves the scrollback clean.
import VisualLogger from "visual-logger";
const logger = new VisualLogger();
logger.info("starting");
logger.addItem({ name: "install", color: "green", display: "Installing", spinner: true });
logger.updateItem("install", "resolving dependencies");
logger.updateItem("install", { msg: "linking", display: "Linking" });
logger.removeItem("install");
logger.info("done");debug(), verbose(), info(), log(), warn(), error() - one per level. Levels are debug (10), verbose (20), info (30), warn (40), error (50), fyi (60) and none (100); each gets its own color, exported as LevelColors.
prefix(str | false) and setPrefix(str) set a prefix on subsequent lines.
| method | description |
|---|---|
addItem({ name, color, display, spinner, spinInterval, save }) |
add an in-place item; spinner may be true, a style name or index |
updateItem(name, msg | { msg, display }) |
update what the item shows |
removeItem(name) |
remove it |
clearItems() |
remove all of them |
freezeItems(showItems?) / unfreezeItems() |
stop and resume in-place updating - useful around output you don't want overwritten |
setItemType(type) |
normal, simple, or none to turn in-place rendering off (what CI wants) |
Item names may be strings or symbols.
VisualLogger (also the default export), Levels, LevelColors, LogItemTypes, defaultOutput, and the VisualOutput / OutputInterface types for supplying your own output target.
Licensed under the Apache License, Version 2.0.
