@lxdhub/common
Version:
Display, search and copy LXD-images using a web interface.
60 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const chalk_1 = require("chalk");
const Winston = require("winston");
const { combine, timestamp, label, printf } = Winston.format;
const format = (message, color) =>
// @ts-ignore
`${chalk_1.default.cyan(message.timestamp)} [${message.context}] ${chalk_1.default[color](message.level)}: ${message.message}`;
/**
* The Winston Logger Strategy
*/
class WinstonLogger {
constructor(context, level = 'info') {
this.context = context;
this.level = level;
this.logger = Winston.createLogger({
level,
format: Winston.format.json(),
});
if (process.env.NODE_ENV !== 'production') {
const myFormat = printf((message) => {
switch (message.level) {
case 'info':
return format(message, 'blue');
case 'error':
return format(message, 'red');
case 'warn':
return format(message, 'yellow');
case 'silly':
return format(message, 'gray');
default:
return format(message, 'blueBright');
}
});
this.logger.add(new Winston.transports.Console({
format: combine(label(), timestamp(), myFormat)
}));
}
}
log(message) {
this.logger.info(message, { context: this.context });
}
info(message) {
this.log(message);
}
silly(message) {
this.logger.silly(message, { context: this.context });
}
warn(message) {
this.logger.warn(message, { context: this.context });
}
error(message) {
this.logger.error(message, { context: this.context });
}
debug(message) {
this.logger.debug(message, { context: this.context });
}
}
exports.WinstonLogger = WinstonLogger;
//# sourceMappingURL=winston.logger.js.map