UNPKG

meta2-logger

Version:

Simple logging library for NodeJS with TypeScript support and multiple targets including GrayLog.

108 lines 3.79 kB
"use strict"; /* * meta2-logger * * @author Jiri Hybek <jiri@hybek.cz> (https://jiri.hybek.cz/) * @copyright 2017 - 2018 Jiří Hýbek * @license MIT */ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.LogMethodCall = exports.Logging = exports.parseLogLevel = void 0; var interfaces_1 = require("./interfaces"); var index_1 = require("./index"); /** * Parse log level from string to LOG_LEVEL enum value * * @param level Log level */ function parseLogLevel(level) { var _level = interfaces_1.LOG_LEVEL_NAME_MAP[level.toLocaleLowerCase()]; if (_level !== undefined) return _level; else throw new Error("Unknown log level '" + level + "'"); } exports.parseLogLevel = parseLogLevel; /** * Logging decorator * * Assigns logger facility as `log` property. * Note: experimentalDecorators must be enabled * * @param constructor Class * @param facility Facility name * @param opts Facility options */ function Logging(facility, opts) { if (opts === void 0) { opts = {}; } return function (target) { return /** @class */ (function (_super) { __extends(class_1, _super); function class_1() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; var _facility = (facility || target.constructor ? target.constructor["name"] : "Class"); _this.log = (opts.logger ? opts.logger : index_1.default).facility(_facility, opts); return _this; } return class_1; }(target)); }; } exports.Logging = Logging; /** * Log method call decorator * * Traces method call * * @param level Log level * @param captureArgs If to capture arguments * @param prefix Log message prefix */ function LogMethodCall(level, captureArgs, prefix) { if (level === void 0) { level = index_1.LOG_LEVEL.DEBUG; } if (captureArgs === void 0) { captureArgs = true; } if (prefix === void 0) { prefix = ""; } return function (target, propertyKey, descriptor) { var _fn = descriptor.value; descriptor.value = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var stackTrace = index_1.default.captureStackTrace(""); var meta = { class: target.constructor.name, method: propertyKey }; var logger = this.log && this.log instanceof index_1.LoggerFacility ? this.log : index_1.default; var logArgs = [level, meta, prefix, "Method " + meta.class + "." + propertyKey + " called"]; if (captureArgs) { logArgs.push("with arguments"); logArgs.push(args); } logArgs.push("\n" + stackTrace); logger.log.apply(logger, logArgs); return _fn.apply(target, args); }; return descriptor; }; } exports.LogMethodCall = LogMethodCall; //# sourceMappingURL=util.js.map