UNPKG

@multiplatform.one/typegraphql

Version:
130 lines (127 loc) 3.21 kB
import { getOpenTelemetryContext } from "./chunk-4IZGPNAY.js"; import { generateRequestId } from "./chunk-NATQQVC6.js"; import { __name } from "./chunk-SHUYVCID.js"; // src/logger.ts import { logger as baseLogger } from "multiplatform.one"; var LOGGER = "LOGGER"; var LOGGER_OPTIONS = "LOGGER_OPTIONS"; var _logger; var Logger = class { static { __name(this, "Logger"); } options; ctx; logger; loggerContext; constructor(options = {}, ctx) { this.options = options; this.ctx = ctx; this.logger = createLogger(this.options); const telemetryContext = getOpenTelemetryContext(); this.loggerContext = { id: this.ctx?.id, operationName: this.ctx?.params?.operationName, ...telemetryContext }; } formatMessage(message, args = []) { const context = { ...this.loggerContext, ...typeof message === "object" ? message : {}, time: /* @__PURE__ */ new Date() }; return { context, message: typeof message !== "object" ? [ message, ...args ].join(" ") : void 0 }; } trace(message, ...args) { const { context, message: msg } = this.formatMessage(message, args); this.logger?.trace(context, msg); } debug(message, ...args) { const { context, message: msg } = this.formatMessage(message, args); this.logger?.debug(context, msg); } info(message, ...args) { const { context, message: msg } = this.formatMessage(message, args); this.logger?.info(context, msg); } warn(message, error, ...args) { const err = this.getError(message, error, ...args); this.logger?.warn(err); } error(message, error, ...args) { const err = this.getError(message, error, ...args); this.logger?.error(err); } getError(message, error, ...args) { let err = typeof message !== "object" ? new Error([ message, ...error ? [ error ] : [], ...args ].join(" ")) : message; if (typeof err === "object" && !(err instanceof Error) && error) { if (typeof error !== "object") { error = new Error([ error, ...args ].join(" ")); } Object.entries(err).forEach(([key, value]) => { error[key] = value; }); err = error; } return Object.assign({}, err, this.loggerContext, { time: /* @__PURE__ */ new Date() }); } }; function createLogger(options) { if (_logger) return _logger; const telemetryContext = getOpenTelemetryContext(); _logger = baseLogger.getSubLogger({ name: "typegraphql", type: options.type, level: options.level, metadata: { ...options.metadata, ...telemetryContext } }); return _logger; } __name(createLogger, "createLogger"); function createHttpLogger(options = {}) { const logger = createLogger(options); return { logger, genReqId: generateRequestId, customProps: options.customProps || ((req) => ({ httpVersion: req.httpVersion, method: req.method, remoteAddress: req.socket.remoteAddress, url: req.url })) }; } __name(createHttpLogger, "createHttpLogger"); export { LOGGER, LOGGER_OPTIONS, Logger, createHttpLogger };