error-advisor
Version:
NPM module that aim to facilitate the error handling by providing http errors classes and also let you customize business errors as well with handy and clean way.
93 lines • 3.12 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
const winston_1 = require("winston");
// export const logger = createLogger({
// level: "info",
// format: format.combine(
// format.timestamp(),
// format.json(),
// ),
// transports: [
// new transports.Console({ level: "info" }),
// new transports.File({
// level: 'error',
// filename: './logs/error.log'
// })
// ],
// })
const customLevels = {
levels: {
trace: 5,
debug: 4,
info: 3,
warn: 2,
error: 1,
fatal: 0,
},
colors: {
trace: "white",
debug: "green",
info: "green",
warn: "yellow",
error: "red",
fatal: "red",
},
};
const formatter = winston_1.format.combine(winston_1.format.colorize(), winston_1.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston_1.format.splat(), winston_1.format.printf((info) => {
const { timestamp, level, message } = info, meta = __rest(info, ["timestamp", "level", "message"]);
return `${timestamp} [${level}]: ${message} ${Object.keys(meta).length ? JSON.stringify(meta, null, 2) : ""}`;
}));
class Log {
constructor(environment) {
this.now = new Date();
const prodTransport = new winston_1.transports.File({
filename: "logs/error" + this.now + ".log",
level: "error",
});
const transport = new winston_1.transports.Console({
format: formatter,
});
this.logger = winston_1.createLogger({
level: this.isDevEnvironment(environment) ? "trace" : "error",
levels: customLevels.levels,
transports: [this.isDevEnvironment(environment) ? transport : prodTransport],
});
winston_1.addColors(customLevels.colors);
}
trace(msg, meta) {
this.logger.log("trace", msg, meta);
}
debug(msg, meta) {
this.logger.debug(msg, meta);
}
info(msg, meta) {
this.logger.info(msg, meta);
}
warn(msg, meta) {
this.logger.warn(msg, meta);
}
error(msg, meta) {
this.logger.error(msg, meta);
}
fatal(msg, meta) {
this.logger.log("fatal", msg, meta);
}
isDevEnvironment(environment) {
let isDevEnvironment = false;
environment === "development" && (isDevEnvironment = true);
return isDevEnvironment;
}
}
exports.default = Log;
//# sourceMappingURL=logger.js.map