winstonson
Version:
Simple logging wrapper around Winston - for Node.js
149 lines • 4.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const moment_1 = __importDefault(require("moment"));
const winston_1 = __importDefault(require("winston"));
let _level = "debug";
let _dateFormat = null;
const _customLevels = {
levels: {
error: 0,
warn: 1,
info: 2,
trace: 3,
debug: 4
},
colors: {
error: "red",
warn: "yellow",
info: "cyan",
trace: "magenta",
debug: "white"
}
};
const _logFormatter = winston_1.default.format.printf((info) => {
const date = _dateFormat ? info.timestamp.format(_dateFormat) : info.timestamp.format();
return `${info.level}: ${date} [${info.filename}] ${info.message}`;
});
const _transports = {
console: new winston_1.default.transports.Console({
format: winston_1.default.format.combine(winston_1.default.format.colorize(), _logFormatter)
}),
fileGeneral: new winston_1.default.transports.File({
filename: "out.log",
format: _logFormatter
}),
fileError: new winston_1.default.transports.File({
filename: "error.log",
level: "error",
format: _logFormatter
})
};
const _logger = winston_1.default.createLogger({
levels: _customLevels.levels,
level: _level,
transports: [_transports.fileError, _transports.fileGeneral]
});
winston_1.default.addColors(_customLevels.colors);
if (process.env.NODE_ENV !== "production") {
_logger.add(_transports.console);
}
if (process.env.NODE_ENV === "test") {
_transports.console.silent = true;
}
class WinstonsonLogger {
constructor(filename) {
this.filename = filename;
}
debug(message) {
_logger.log({
level: "debug",
message,
timestamp: moment_1.default(),
filename: this.filename
});
}
trace(message) {
_logger.log({
level: "trace",
message,
timestamp: moment_1.default(),
filename: this.filename
});
}
info(message) {
_logger.log({
level: "info",
message,
timestamp: moment_1.default(),
filename: this.filename
});
}
warn(message) {
_logger.log({
level: "warn",
message,
timestamp: moment_1.default(),
filename: this.filename
});
}
error(message) {
if (typeof message === "object" && message instanceof Error) {
_logger.log({
level: "error",
message: message.message,
timestamp: moment_1.default(),
filename: this.filename
});
}
else {
_logger.log({
level: "error",
message,
timestamp: moment_1.default(),
filename: this.filename
});
}
}
level(level) {
if (level) {
_level = level;
_logger.level = level;
_transports.console.level = level;
_transports.fileGeneral.level = level;
}
else {
return _level;
}
}
mute() {
_transports.console.silent = true;
}
unmute() {
_transports.console.silent = false;
}
setDateFormat(format) {
_dateFormat = format;
}
stream(level) {
return {
write(message, enc) {
_logger.log({
level,
message: message.replace(/\n/g, ""),
timestamp: moment_1.default(),
filename: this.filename
});
}
};
}
}
function default_1(m) {
const pathParts = m.id.split("/");
const filename = pathParts[pathParts.length - 1];
return new WinstonsonLogger(filename);
}
exports.default = default_1;
//# sourceMappingURL=index.js.map