export class Logger { historyLen = 19; history = []; /** * Create a nicer log with a banner. * * @param {NS} ns - BitBurner API * @param {Function[]} lineFns - Functions to generate a line (Seperated by a linebreak) */ constructor(ns, lineFns = []) { this.ns = ns; this.fns = lineFns; this.historyLen -= lineFns.length * 2; this.history = Array(this.historyLen).fill(''); this.log(); } /** * Add red error message to logs. * * @param {string} message - Text that will be added */ error(message) { this.log(`ERROR: ${message}`); } /** * Add a linebreak */ lineBreak() { this.ns.print('==================================================='); } /** * Print the header using the provided functions. */ header() { this.lineBreak(); this.fns.forEach(fn => { this.ns.print(fn()); this.lineBreak(); }); } /** * Add message to the logs. * * @param {string} message - Text that will be added */ log(message = '') { this.ns.clearLog(); this.header(); if(message) this.history.push(message); this.history.splice(0, this.history.length - this.historyLen); this.history.forEach(m => this.ns.print(m)); } /** * Add orange warning to the logs. * * @param {string} message - Text that will be added */ warn(message) { this.log(`WARN: ${message}`); } }