UNPKG

grafana-logger

Version:

A functional logging package for Grafana with structured JSON output

177 lines 6.58 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; import { performance } from "perf_hooks"; function createLogger(baseEntry, timers) { function logEntry(level, message, duration) { var logEntry = { timestamp: baseEntry.timestamp || new Date().toISOString(), level: level, message: message, service: baseEntry.service, }; for (var _i = 0, _a = Object.entries(baseEntry); _i < _a.length; _i++) { var _b = _a[_i], key = _b[0], value = _b[1]; if (!["timestamp", "level", "message", "service"].includes(key) && value !== undefined) { ; logEntry[key] = value; } } if (duration !== undefined) { logEntry.duration_ms = duration; } var seen = new WeakSet(); var jsonOutput = JSON.stringify(logEntry, function (_key, value) { if (typeof value === "object" && value !== null) { if (seen.has(value)) { return "[Circular]"; } seen.add(value); } return value; }); // Use appropriate console method based on log level switch (level) { case "debug": console.debug(jsonOutput); break; case "info": console.info(jsonOutput); break; case "warn": console.warn(jsonOutput); break; case "error": case "fatal": console.error(jsonOutput); break; case "trace": console.trace(jsonOutput); break; case "timer": console.log(jsonOutput); break; default: console.log(jsonOutput); } } return { component: function (component) { return createLogger(__assign(__assign({}, baseEntry), { component: component }), timers); }, traceFile: function (traceFile) { return createLogger(__assign(__assign({}, baseEntry), { trace_file: traceFile }), timers); }, requestPayload: function (payload) { return createLogger(__assign(__assign({}, baseEntry), { request_payload: payload }), timers); }, context: function (context) { return createLogger(__assign(__assign({}, baseEntry), { context: context }), timers); }, processId: function (processId) { return createLogger(__assign(__assign({}, baseEntry), { process_id: processId }), timers); }, traceId: function (traceId) { return createLogger(__assign(__assign({}, baseEntry), { trace_id: traceId }), timers); }, tags: function (tags) { return createLogger(__assign(__assign({}, baseEntry), { tags: __spreadArray([], tags, true) }), timers); }, tag: function (tag) { var existingTags = baseEntry.tags || []; return createLogger(__assign(__assign({}, baseEntry), { tags: __spreadArray(__spreadArray([], existingTags, true), [tag], false) }), timers); }, debug: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var message = args.map(String).join(" "); logEntry("debug", message); }, info: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var message = args.map(String).join(" "); logEntry("info", message); }, warn: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var message = args.map(String).join(" "); logEntry("warn", message); }, error: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var message = args.map(String).join(" "); logEntry("error", message); }, fatal: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var message = args.map(String).join(" "); logEntry("fatal", message); }, trace: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var message = args.map(String).join(" "); logEntry("trace", message); }, child: function (metadata) { return createLogger(__assign(__assign({}, baseEntry), metadata), timers); }, time: function (name) { timers.set(name, performance.now()); }, timeEnd: function (name) { var startTime = timers.get(name); if (startTime !== undefined) { var duration = performance.now() - startTime; timers.delete(name); logEntry("timer", "Timer ".concat(name, ": ").concat(duration.toFixed(2), "ms"), Math.round(duration)); } else { logEntry("warn", "Timer '".concat(name, "' does not exist")); } }, }; } export function gl(service) { var timers = new Map(); var baseEntry = { service: service, process_id: process.pid.toString(), }; return createLogger(baseEntry, timers); } //# sourceMappingURL=logger.js.map