A light weight logger with a status bar on the bottom or the top that does not disappear with scrolling
npm install log-with-statusbarA light weight logger with a status bar on the bottom or the top that does not disappear with scrolling.
You can also attach a verbosity level to each scrollable log call.

[![NPM Downloads][downloadst-image]][downloads-url]
- [x] Prints system log while showing a status line message at the bottom without scrolling
- [x] Supports multiple non-scrollable status lines
- [x] Based on ololog. All features of ololog are available.
Status bar on the bottom:
!Demo picture bottom
Status bar on the top:
!Demo picture top
``bash`
npm install log-with-statusbar
`javascript
const log = require("log-with-statusbar")();
// Set the bottom status lines
// Each line is an entry of the array
log.setStatusBarText([
This is non-scrollable status bar line 1,This is non-scrollable status bar line 2
]);
// Normal scrollable system logs
let i = 0;
setInterval(() => {
log.info(This is a normal scrollable log ${i++});`
}, 1);
Several examples are available in examples folder:
- Simple demo
- Progress bar
- Spinner
- Enable/Disable log and status bar
- Push and Pop
- Verbosity
`javascriptAdding one line to the status bar
// Adds one line to the status bar (See examples/push_pop_demo.js)
log.statusBarTextPush();
// Removes one line from the status bar (See examples/push_pop_demo.js)
log.statusBarTextPop(Remove the last line from the status bar);`Enable and Disable
You can enable/disable the status bar or both scrollable log and status bar. See examples/enable.js
`javascript
// Disables the status bar
log.disableStatusBar();
// Enables the status bar
log.enableStatusBar();
// Completely disables logging both scrollable and status bar
log = log.disable();
// Completely enables logging both scrollable and status bar
log = log.enable();
`Spinner
You can use create pre-designed spinners. credit to cli-spinners. See Spinner example and spinners.json file.
`javascript
// Returns an object created from the spinners.json file
let spinners = log.getSpinners();
`Configurations
If you just want to use the status bar and also setup ololog parameters, you can set the following:
`javascript`
const log = require("log-with-statusbar")({
ololog_configure: {
locate: false,
tag: true
}
});
ololog_configure: sets the ololog configurations. All features of ololog are available.
The following settings are for the status bar behavior:
`javascriptPlease wait...
const log = require("log-with-statusbar")({
initialStatusTextArray: [],`
enableStatusBar: true,
position: "top" // Default value is "bottom"
});disableInputEnable/Disable Input Key Press
Pushing keys while showing the status bar might disturb the output. You can disable input keys except for CTRL+C using , which is set to false by default:
`javascriptPlease wait...
const log = require("log-with-statusbar")({
initialStatusTextArray: [],`
disableInput: true
});
- Calling log.verbosity(n).info("Test"); attaches verbosity level n to this call.log.info("Test");
- Calling attaches verbosity the default verbosity level to this call.log = log.maxVerbosity(1000);
- Calling will change the global maximum verbosity level
Below is an example:
`javascript
// We only print if verbosity is less than or equal maxVerbosity
var log = require("log-with-statusbar")({
maxVerbosity: 1, //maximum verbosity level
verbosity: 1, //Default verbosity level
enableStatusBar: false
});
// Non-verbose mode: The lines with verbosity 2 and 3 won't print
log("This prints because (1 <= 1)= true");
log.verbosity(2).info("Less important line 1");
log.verbosity(3).info("Even less important line 2");
console.log("\nLet's be more verbose!\n");
// Let's be more verbose: The lines with verbosity 2 and 3 will now print
log = log.maxVerbosity(3);
log("This prints because (1 <= 3)= true");
log.verbosity(2).info("Less important line 1");
log.verbosity(3).info("Even less important line 2");
`
And here is a more complicated example:
`javascript
var log = require("log-with-statusbar")({
maxVerbosity: 1, //maximum verbosity level
verbosity: 1, //Default verbosity level
enableStatusBar: false
});
// We only print if verbosity is less than or equal maxVerbosity
log("This prints using default verbosity level: (1 <= 1)= true");
// Attaching verbosity level 1
log.verbosity(1).info("This will print, (1 <= 1) = true");
// Attaching verbosity level 17
log.verbosity(17).info("This won't print, (17 <= 1) = false");
//Let's be more verbose now!
log.info("Changing maxVerbosity to 1000");
log = log.maxVerbosity(1000);
log.verbosity(17).info("This will print, (17 <= 1000) = ture");
log.verbosity(12).info("This will print, (12 <= 1000) = true");
log.verbosity(1).info("This will print, (1 <= 1000) = true");
log.verbosity(1500).info("This won't print, (1500 <= 1000) = false");
//Default verbosity level is still 1
log.info("This will print, (1 <= 1000) = true");
// Changing default verbosity level
log = log.verbosity(1600);
log.info("This won't print, (1600 <= 1500) = false");
``
[downloads-image]: https://img.shields.io/npm/dm/log-with-statusbar.svg
[downloadst-image]: https://img.shields.io/npm/dt/log-with-statusbar.svg
[downloads-url]: https://npmjs.org/package/log-with-statusbar