"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
*
*/
const util = require("util");
const stack_trace_1 = require("stack-trace");
/**
*
*/
class Logger {
/**
*
* @param message
* @return {any[]}
*/
static stringify(...message) {
const messages = [];
if (message) {
message.forEach(m => {
if (m instanceof Object) {
try {
messages.push(JSON.stringify(m));
}
catch (e) {
messages.push(util.inspect(m, { colors: true }));
}
}
else {
messages.push(m);
}
});
}
return messages;
}
/**
*
* @param message
*/
static fatal(...message) {
const trace = stack_trace_1.get();
console.error(new Date(), '[FATAL]', `${trace[1].getFileName()}@${trace[1].getFunctionName()}:${trace[1].getLineNumber()}`);
console.error(new Date(), '[FATAL]', Logger.stringify(message).join(' '));
console.trace(new Date(), '[FATAL]', Logger.stringify(message).join(' '));
process.exit(1);
}
/**
*
* @param message
*/
static error(...message) {
console.error(new Date(), '[ERROR]', message.join(' '));
}
/**
*
* @param message
*/
static warning(...message) {
console.warn(new Date(), '[WARNING]', message.join(' '));
}
/**
*
* @param message
*/
static info(...message) {
console.log(new Date(), '[INFO]', message.join(' '));
}
/**
*
* @param message
*/
static success(...message) {
console.log(new Date(), '[SUCCESS]', message.join(' '));
}
/**
*
* @param message
*/
static secondary(...message) {
console.log(new Date(), message.join(' '));
}
/**
*
* @param message
*/
static primary(...message) {
console.log(new Date(), message.join(' '));
}
/**
*
* @param message
*/
static debug(...message) {
const trace = stack_trace_1.get();
console.log(new Date(), '[DEBUG]', `${trace[1].getFileName()}@${trace[1].getFunctionName()}:${trace[1].getLineNumber()}`);
console.log(new Date(), ' ', Logger.stringify(message).join(' '));
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map