balena-cli
Version:
The official balena Command Line Interface
104 lines • 3.49 kB
JavaScript
"use strict";
const _ = require("lodash");
const os_1 = require("os");
const resin_stream_logger_1 = require("resin-stream-logger");
const lazy_1 = require("./lazy");
var Level;
(function (Level) {
Level["BUILD"] = "build";
Level["INFO"] = "info";
Level["DEBUG"] = "debug";
Level["SUCCESS"] = "success";
Level["WARN"] = "warn";
Level["ERROR"] = "error";
Level["LOGS"] = "logs";
Level["LIVEPUSH"] = "livepush";
})(Level || (Level = {}));
class Logger {
constructor() {
const logger = new resin_stream_logger_1.StreamLogger();
const chalk = (0, lazy_1.getChalk)();
logger.addPrefix('build', chalk.blue('[Build]'));
logger.addPrefix('info', chalk.cyan('[Info]'));
logger.addPrefix('debug', chalk.magenta('[Debug]'));
logger.addPrefix('success', chalk.green('[Success]'));
logger.addPrefix('warn', chalk.yellow('[Warn]'));
logger.addPrefix('error', chalk.red('[Error]'));
logger.addPrefix('logs', chalk.green('[Logs]'));
logger.addPrefix('live', chalk.yellow('[Live]'));
this.streams = {
build: logger.createLogStream('build'),
info: logger.createLogStream('info'),
debug: logger.createLogStream('debug'),
success: logger.createLogStream('success'),
warn: logger.createLogStream('warn'),
error: logger.createLogStream('error'),
logs: logger.createLogStream('logs'),
livepush: logger.createLogStream('live'),
};
_.forEach(this.streams, function (stream, key) {
if (key !== 'debug') {
stream.pipe(process.stdout);
}
else if (process.env.DEBUG) {
stream.pipe(process.stderr);
}
});
this.formatMessage = logger.formatWithPrefix.bind(logger);
this.deferredLogMessages = [];
this.adapter = {
debug: (msg) => this.logDebug(msg),
error: (msg) => this.logError(msg),
info: (msg) => this.logInfo(msg),
log: (msg) => this.logLogs(msg),
warn: (msg) => this.logWarn(msg),
};
}
static getLogger() {
if (!this.logger) {
this.logger = new Logger();
}
return this.logger;
}
logInfo(msg) {
return this.streams.info.write(msg + os_1.EOL);
}
logDebug(msg) {
return this.streams.debug.write(msg + os_1.EOL);
}
logSuccess(msg) {
return this.streams.success.write(msg + os_1.EOL);
}
logWarn(msg) {
return this.streams.warn.write(msg + os_1.EOL);
}
logError(msg) {
return this.streams.error.write(msg + os_1.EOL);
}
logBuild(msg) {
return this.streams.build.write(msg + os_1.EOL);
}
logLogs(msg) {
return this.streams.logs.write(msg + os_1.EOL);
}
logLivepush(msg) {
return this.streams.livepush.write(msg + os_1.EOL);
}
deferredLog(msg, level) {
if (!this.deferredLogMessages.find((entry) => entry[0] === msg)) {
this.deferredLogMessages.push([msg, level]);
}
}
outputDeferredMessages() {
this.deferredLogMessages.forEach((m) => {
this.streams[m[1]].write(m[0] + os_1.EOL);
});
this.deferredLogMessages = [];
}
getAdapter() {
return this.adapter;
}
}
Logger.Level = Level;
module.exports = Logger;
//# sourceMappingURL=logger.js.map