@multiplatform.one/typegraphql
Version:
typegraphql for multiplatform.one
130 lines (127 loc) • 3.21 kB
JavaScript
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
};