ts-log
Version:
Abstract logger TypeScript interface with a dummy logger that does nothing, useful for libraries.
75 lines • 3.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var src_1 = require("../src");
// example class that uses the logger
var Calculator = /** @class */ (function () {
// accept the logger in the constructor, defaulting to dummy logger that does nothing
function Calculator(log) {
if (log === void 0) { log = src_1.dummyLogger; }
this.log = log;
}
Calculator.prototype.sum = function (a, b) {
var result = a + b;
// call the logger
this.log.info("summing ".concat(a, " + ").concat(b, " = ").concat(result), a, b, result);
return result;
};
return Calculator;
}());
// example custom logger that logs to a file
var FileLogger = /** @class */ (function () {
function FileLogger(filename) {
this.fd = fs.openSync(filename, "a");
}
FileLogger.prototype.trace = function (message) {
var optionalParams = [];
for (var _i = 1; _i < arguments.length; _i++) {
optionalParams[_i - 1] = arguments[_i];
}
this.append("TRACE", "".concat(message, " ").concat(JSON.stringify(optionalParams)));
};
FileLogger.prototype.debug = function (message) {
var optionalParams = [];
for (var _i = 1; _i < arguments.length; _i++) {
optionalParams[_i - 1] = arguments[_i];
}
this.append("DEBUG", "".concat(message, " ").concat(JSON.stringify(optionalParams)));
};
FileLogger.prototype.info = function (message) {
var optionalParams = [];
for (var _i = 1; _i < arguments.length; _i++) {
optionalParams[_i - 1] = arguments[_i];
}
this.append("INFO ", "".concat(message, " ").concat(JSON.stringify(optionalParams)));
};
FileLogger.prototype.warn = function (message) {
var optionalParams = [];
for (var _i = 1; _i < arguments.length; _i++) {
optionalParams[_i - 1] = arguments[_i];
}
this.append("WARN ", "".concat(message, " ").concat(JSON.stringify(optionalParams)));
};
FileLogger.prototype.error = function (message) {
var optionalParams = [];
for (var _i = 1; _i < arguments.length; _i++) {
optionalParams[_i - 1] = arguments[_i];
}
this.append("ERROR", "".concat(message, " ").concat(JSON.stringify(optionalParams)));
};
FileLogger.prototype.append = function (type, message) {
fs.writeSync(this.fd, "".concat(new Date().toISOString(), " ").concat(type, " ").concat(message, "\n"));
};
return FileLogger;
}());
// don't define a logger, defaults to dummy logger that does nothing
var calculator1 = new Calculator();
// use the built-in console as the logger
var calculator2 = new Calculator(console);
// use the custom file logger
var calculator3 = new Calculator(new FileLogger("log.txt"));
// run the calculator
calculator1.sum(2, 3);
calculator2.sum(-4, 1);
calculator3.sum(6, 3);
//# sourceMappingURL=index.js.map
;