logixia 2.0.6 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +9 -0
  2. package/dist/{async-context-2mbUKhcl.mjs → async-context-COuvmwsS.mjs} +2 -2
  3. package/dist/{async-context-2mbUKhcl.mjs.map → async-context-COuvmwsS.mjs.map} +1 -1
  4. package/dist/{async-context-DUFMDYAr.js → async-context-Dv0bmPC-.js} +3 -3
  5. package/dist/{async-context-DUFMDYAr.js.map → async-context-Dv0bmPC-.js.map} +1 -1
  6. package/dist/{azure-monitor.transport-C1RWAumT.mjs → azure-monitor.transport-Coz5Gesu.mjs} +5 -5
  7. package/dist/{azure-monitor.transport-C1RWAumT.mjs.map → azure-monitor.transport-Coz5Gesu.mjs.map} +1 -1
  8. package/dist/{azure-monitor.transport-Bu4S2I2q.js → azure-monitor.transport-D6ryi8rA.js} +5 -5
  9. package/dist/{azure-monitor.transport-Bu4S2I2q.js.map → azure-monitor.transport-D6ryi8rA.js.map} +1 -1
  10. package/dist/azure.js +1 -1
  11. package/dist/azure.mjs +1 -1
  12. package/dist/{batch-buffer-C7Am4Mw-.js → batch-buffer-CFzKnuNZ.js} +3 -3
  13. package/dist/{batch-buffer-C7Am4Mw-.js.map → batch-buffer-CFzKnuNZ.js.map} +1 -1
  14. package/dist/{batch-buffer-BvXLDPlV.mjs → batch-buffer-CQUWDMYq.mjs} +3 -3
  15. package/dist/{batch-buffer-BvXLDPlV.mjs.map → batch-buffer-CQUWDMYq.mjs.map} +1 -1
  16. package/dist/browser.js +25 -1
  17. package/dist/browser.js.map +1 -1
  18. package/dist/browser.mjs +25 -1
  19. package/dist/browser.mjs.map +1 -1
  20. package/dist/{builder-yFvJrz7o.js → builder-BTzvPGHN.js} +82 -15
  21. package/dist/builder-BTzvPGHN.js.map +1 -0
  22. package/dist/{builder-DhNhvOkt.mjs → builder-DKL7WcIN.mjs} +71 -10
  23. package/dist/builder-DKL7WcIN.mjs.map +1 -0
  24. package/dist/cloudwatch.js +1 -1
  25. package/dist/cloudwatch.mjs +1 -1
  26. package/dist/{cloudwatch.transport-DZqF2xZO.mjs → cloudwatch.transport-Cr1aeTGj.mjs} +6 -6
  27. package/dist/{cloudwatch.transport-DZqF2xZO.mjs.map → cloudwatch.transport-Cr1aeTGj.mjs.map} +1 -1
  28. package/dist/{cloudwatch.transport-Ch1Uae-0.js → cloudwatch.transport-D4G5xYfG.js} +6 -6
  29. package/dist/{cloudwatch.transport-Ch1Uae-0.js.map → cloudwatch.transport-D4G5xYfG.js.map} +1 -1
  30. package/dist/correlation.d.mts +6 -0
  31. package/dist/correlation.d.mts.map +1 -1
  32. package/dist/correlation.d.ts +6 -0
  33. package/dist/correlation.d.ts.map +1 -1
  34. package/dist/correlation.js +4 -2
  35. package/dist/correlation.js.map +1 -1
  36. package/dist/correlation.mjs +4 -2
  37. package/dist/correlation.mjs.map +1 -1
  38. package/dist/{entry-fields-BSLkzw18.js → entry-fields-CVwoQplO.js} +3 -3
  39. package/dist/{entry-fields-BSLkzw18.js.map → entry-fields-CVwoQplO.js.map} +1 -1
  40. package/dist/{entry-fields-J1OBi24o.mjs → entry-fields-DNTKQxoU.mjs} +2 -2
  41. package/dist/{entry-fields-J1OBi24o.mjs.map → entry-fields-DNTKQxoU.mjs.map} +1 -1
  42. package/dist/gcp.js +1 -1
  43. package/dist/gcp.mjs +1 -1
  44. package/dist/{gcp.transport-Dy2Lf8FI.js → gcp.transport-CVuRpchl.js} +6 -6
  45. package/dist/{gcp.transport-Dy2Lf8FI.js.map → gcp.transport-CVuRpchl.js.map} +1 -1
  46. package/dist/{gcp.transport-DVCmnA3b.mjs → gcp.transport-LLK2bw2-.mjs} +6 -6
  47. package/dist/{gcp.transport-DVCmnA3b.mjs.map → gcp.transport-LLK2bw2-.mjs.map} +1 -1
  48. package/dist/{index-BSTtFcQ6.d.mts → index-BAkPHp5D.d.mts} +9 -1
  49. package/dist/index-BAkPHp5D.d.mts.map +1 -0
  50. package/dist/{index-CFDGkI8n.d.ts → index-e7LowmAu.d.ts} +9 -1
  51. package/dist/index-e7LowmAu.d.ts.map +1 -0
  52. package/dist/index.d.mts +11 -3
  53. package/dist/index.d.mts.map +1 -1
  54. package/dist/index.d.ts +11 -3
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +17 -16
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.mjs +8 -8
  59. package/dist/internal-log-Cy5nF1ZL.mjs +63 -0
  60. package/dist/internal-log-Cy5nF1ZL.mjs.map +1 -0
  61. package/dist/internal-log-DwqTjhpb.js +80 -0
  62. package/dist/internal-log-DwqTjhpb.js.map +1 -0
  63. package/dist/{logitron-logger-D_MYYrQt.d.ts → logitron-logger-Qh3y9-WH.d.ts} +2 -2
  64. package/dist/{logitron-logger-D_MYYrQt.d.ts.map → logitron-logger-Qh3y9-WH.d.ts.map} +1 -1
  65. package/dist/{logitron-logger-D22Yb61K.d.mts → logitron-logger-sYuk8fOb.d.mts} +2 -2
  66. package/dist/{logitron-logger-D22Yb61K.d.mts.map → logitron-logger-sYuk8fOb.d.mts.map} +1 -1
  67. package/dist/middleware.d.mts +1 -1
  68. package/dist/middleware.d.ts +1 -1
  69. package/dist/middleware.js +8 -8
  70. package/dist/middleware.js.map +1 -1
  71. package/dist/middleware.mjs +3 -3
  72. package/dist/nest.d.mts +12 -3
  73. package/dist/nest.d.mts.map +1 -1
  74. package/dist/nest.d.ts +12 -3
  75. package/dist/nest.d.ts.map +1 -1
  76. package/dist/nest.js +128 -20
  77. package/dist/nest.js.map +1 -1
  78. package/dist/nest.mjs +128 -20
  79. package/dist/nest.mjs.map +1 -1
  80. package/dist/{otel-DyeH6DVR.js → otel-ChnVYRLA.js} +5 -5
  81. package/dist/{otel-DyeH6DVR.js.map → otel-ChnVYRLA.js.map} +1 -1
  82. package/dist/{otel-Dt5riXuE.mjs → otel-DOuwGPCd.mjs} +5 -5
  83. package/dist/{otel-Dt5riXuE.mjs.map → otel-DOuwGPCd.mjs.map} +1 -1
  84. package/dist/{safe-stringify-B5p5ktFe.mjs → safe-stringify--7gbe95n.mjs} +2 -2
  85. package/dist/{safe-stringify-B5p5ktFe.mjs.map → safe-stringify--7gbe95n.mjs.map} +1 -1
  86. package/dist/{safe-stringify-J3sh-7YM.js → safe-stringify-CN7icp8S.js} +5 -5
  87. package/dist/{safe-stringify-J3sh-7YM.js.map → safe-stringify-CN7icp8S.js.map} +1 -1
  88. package/dist/{search-DA3ft3X5.d.mts → search-D-8HJADE.d.mts} +2 -2
  89. package/dist/{search-DA3ft3X5.d.mts.map → search-D-8HJADE.d.mts.map} +1 -1
  90. package/dist/{search-DEl3Pe47.d.ts → search-DPwTKPve.d.ts} +2 -2
  91. package/dist/{search-DEl3Pe47.d.ts.map → search-DPwTKPve.d.ts.map} +1 -1
  92. package/dist/search.d.mts +1 -1
  93. package/dist/search.d.ts +1 -1
  94. package/dist/{secret-config-CmK2wVkr.js → secret-config-BvFl2dC8.js} +7 -8
  95. package/dist/{secret-config-CmK2wVkr.js.map → secret-config-BvFl2dC8.js.map} +1 -1
  96. package/dist/{secret-config-Dhb6pqTU.mjs → secret-config-ByGq7kJd.mjs} +2 -3
  97. package/dist/{secret-config-Dhb6pqTU.mjs.map → secret-config-ByGq7kJd.mjs.map} +1 -1
  98. package/dist/sensitive-names-CHMowujD.js +276 -0
  99. package/dist/sensitive-names-CHMowujD.js.map +1 -0
  100. package/dist/sensitive-names-o__1PUUR.mjs +217 -0
  101. package/dist/sensitive-names-o__1PUUR.mjs.map +1 -0
  102. package/dist/{slack.transport-BTEwsREY.mjs → slack.transport-CSj1j0_X.mjs} +6 -6
  103. package/dist/{slack.transport-BTEwsREY.mjs.map → slack.transport-CSj1j0_X.mjs.map} +1 -1
  104. package/dist/{slack.transport-UbYvOdKx.js → slack.transport-zLQ9MGxS.js} +6 -6
  105. package/dist/{slack.transport-UbYvOdKx.js.map → slack.transport-zLQ9MGxS.js.map} +1 -1
  106. package/dist/testing.d.mts +1 -1
  107. package/dist/testing.d.ts +1 -1
  108. package/dist/transports.d.mts +1 -1
  109. package/dist/transports.d.ts +1 -1
  110. package/dist/transports.js +6 -6
  111. package/dist/transports.mjs +6 -6
  112. package/dist/worker-entry.js +25 -1
  113. package/dist/worker.js +1 -1
  114. package/dist/worker.mjs +1 -1
  115. package/dist/{worker.transport-BmmOKb1-.mjs → worker.transport-D78xhNhB.mjs} +3 -3
  116. package/dist/{worker.transport-BmmOKb1-.mjs.map → worker.transport-D78xhNhB.mjs.map} +1 -1
  117. package/dist/{worker.transport-DxxbqQCG.js → worker.transport-DQDv1nAJ.js} +3 -3
  118. package/dist/{worker.transport-DxxbqQCG.js.map → worker.transport-DQDv1nAJ.js.map} +1 -1
  119. package/package.json +1 -1
  120. package/dist/builder-DhNhvOkt.mjs.map +0 -1
  121. package/dist/builder-yFvJrz7o.js.map +0 -1
  122. package/dist/index-BSTtFcQ6.d.mts.map +0 -1
  123. package/dist/index-CFDGkI8n.d.ts.map +0 -1
  124. package/dist/internal-log-Bg4V1cPg.mjs +0 -170
  125. package/dist/internal-log-Bg4V1cPg.mjs.map +0 -1
  126. package/dist/internal-log-By4Govmu.js +0 -223
  127. package/dist/internal-log-By4Govmu.js.map +0 -1
  128. package/dist/own-property-BWkibepN.js +0 -40
  129. package/dist/own-property-BWkibepN.js.map +0 -1
  130. package/dist/own-property-CjFw9qwZ.mjs +0 -29
  131. package/dist/own-property-CjFw9qwZ.mjs.map +0 -1
package/dist/nest.mjs CHANGED
@@ -1,7 +1,8 @@
1
- import { a as isLogixiaException, o as LogixiaLogger, t as ErrorResponseBuilder, w as LogLevel, x as DEFAULT_CONFIG } from "./builder-DhNhvOkt.mjs";
1
+ import { S as DEFAULT_CONFIG, T as LogLevel, _ as serializeError, a as isLogixiaException, o as LogixiaLogger, t as ErrorResponseBuilder } from "./builder-DKL7WcIN.mjs";
2
+ import { a as buildNameSet, c as sensitiveQueryValues, l as assignOwn, n as DEFAULT_REDACT_QUERY_PARAMS, o as redactUrlQuery, s as sanitizeText } from "./sensitive-names-o__1PUUR.mjs";
2
3
  import { d as getTraceContextKey, l as extractTraceId, o as TraceContext, p as sanitizeIncomingId, r as DEFAULT_TRACE_HEADERS } from "./request-trace-BgNykH9M.mjs";
3
- import { r as internalWarn, t as internalError } from "./internal-log-Bg4V1cPg.mjs";
4
- import { n as protectSecrets } from "./secret-config-Dhb6pqTU.mjs";
4
+ import { n as protectSecrets } from "./secret-config-ByGq7kJd.mjs";
5
+ import { r as internalWarn, t as internalError } from "./internal-log-Cy5nF1ZL.mjs";
5
6
  import { t as safeToString } from "./coerce.utils-B_rEudCn.mjs";
6
7
  import { Catch, Inject, Injectable, Module, Optional, RequestMethod, Scope } from "@nestjs/common";
7
8
  import { EMPTY, Observable } from "rxjs";
@@ -302,10 +303,18 @@ function writeTraceHeader(res, header, traceId) {
302
303
  else if (typeof r.header === "function") r.header(header, traceId);
303
304
  } catch {}
304
305
  }
306
+ /** Injection token for extra query parameter names redacted in the trace context `url`. */
307
+ const LOGIXIA_TRACE_REDACT_QUERY_PARAMS = "LOGIXIA_TRACE_REDACT_QUERY_PARAMS";
308
+ /** The request URL as stored in the trace context: `originalUrl`, sensitive query values redacted. */
309
+ function traceUrl(req, names) {
310
+ const raw = req.originalUrl ?? req.url;
311
+ return raw === void 0 ? void 0 : redactUrlQuery(raw, names);
312
+ }
305
313
  let TraceMiddleware = class TraceMiddleware {
306
- constructor(config) {
314
+ constructor(config, redactQueryParams) {
307
315
  this.config = config;
308
316
  this.ctx = TraceContext.instance;
317
+ this.redactParams = buildNameSet(DEFAULT_REDACT_QUERY_PARAMS, redactQueryParams);
309
318
  const defaultExtractor = {
310
319
  header: DEFAULT_TRACE_HEADERS,
311
320
  query: ["traceId", "trace_id"]
@@ -338,7 +347,7 @@ let TraceMiddleware = class TraceMiddleware {
338
347
  if (header) writeTraceHeader(res, header, traceId);
339
348
  this.ctx.run(traceId, () => next(), {
340
349
  method: req.method,
341
- url: req.url,
350
+ url: traceUrl(req, this.redactParams),
342
351
  userAgent: req.get("User-Agent"),
343
352
  ip: req.ip || ((_req$socket = req.socket) === null || _req$socket === void 0 ? void 0 : _req$socket.remoteAddress) || ((_req$connection = req.connection) === null || _req$connection === void 0 ? void 0 : _req$connection.remoteAddress)
344
353
  });
@@ -347,7 +356,9 @@ let TraceMiddleware = class TraceMiddleware {
347
356
  TraceMiddleware = __decorate([
348
357
  Injectable(),
349
358
  __decorateParam(0, Optional()),
350
- __decorateMetadata("design:paramtypes", [Object])
359
+ __decorateParam(1, Optional()),
360
+ __decorateParam(1, Inject(LOGIXIA_TRACE_REDACT_QUERY_PARAMS)),
361
+ __decorateMetadata("design:paramtypes", [Object, Array])
351
362
  ], TraceMiddleware);
352
363
  // src/core/websocket-trace.interceptor.ts
353
364
  let WebSocketTraceInterceptor = class WebSocketTraceInterceptor {
@@ -469,6 +480,7 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
469
480
  return _LogixiaLoggerModule._globalLogger;
470
481
  }
471
482
  configure(consumer) {
483
+ var _LogixiaLoggerModule$;
472
484
  const { forRoutes = DEFAULT_ROUTES, exclude } = this.config;
473
485
  let resolvedTraceConfig;
474
486
  if (typeof _LogixiaLoggerModule.loggerConfig.traceId === "object") resolvedTraceConfig = _LogixiaLoggerModule.loggerConfig.traceId;
@@ -477,7 +489,7 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
477
489
  contextKey: "traceId",
478
490
  generator: () => TraceContext.instance.generate()
479
491
  };
480
- const middleware = new TraceMiddleware(resolvedTraceConfig);
492
+ const middleware = new TraceMiddleware(resolvedTraceConfig, (_LogixiaLoggerModule$ = _LogixiaLoggerModule.loggerConfig.redact) === null || _LogixiaLoggerModule$ === void 0 ? void 0 : _LogixiaLoggerModule$.queryParams);
481
493
  const middlewareConfig = (req, res, next) => middleware.use(req, res, next);
482
494
  if (exclude) consumer.apply(middlewareConfig).exclude(...exclude).forRoutes(...forRoutes);
483
495
  else consumer.apply(middlewareConfig).forRoutes(...forRoutes);
@@ -764,9 +776,86 @@ function LogMethod(options = {}) {
764
776
  }
765
777
  /** Injection token for {@link LogixiaExceptionFilterOptions}. */
766
778
  const LOGIXIA_EXCEPTION_FILTER_OPTIONS = "LOGIXIA_EXCEPTION_FILTER_OPTIONS";
779
+ const MAX_SCRUB_DEPTH = 8;
780
+ /** Copy `value` with every string passed through `clean`; the input is never modified. */
781
+ function cleanDeep(value, clean, depth = 0) {
782
+ if (typeof value === "string") return clean(value);
783
+ if (value === null || typeof value !== "object" || depth >= MAX_SCRUB_DEPTH) return value;
784
+ if (Array.isArray(value)) return value.map((item) => cleanDeep(item, clean, depth + 1));
785
+ const out = {};
786
+ for (const [key, item] of Object.entries(value)) out[key] = cleanDeep(item, clean, depth + 1);
787
+ return out;
788
+ }
789
+ function scrubErrorResponse(response, clean) {
790
+ const { error, debug } = response;
791
+ return {
792
+ ...response,
793
+ error: cleanDeep(error, clean),
794
+ ...debug !== void 0 ? { debug: cleanDeep(debug, clean) } : {}
795
+ };
796
+ }
797
+ const MAX_ERROR_DEPTH = 6;
798
+ /** Scrub string VALUES of an already serialized tree; keys stay so key-based redaction still applies. */
799
+ function scrubSerialized(value, clean, depth, seen) {
800
+ if (typeof value === "string") return clean(value);
801
+ if (value === null || typeof value !== "object") return typeof value === "function" || typeof value === "symbol" ? "[Unserializable]" : value;
802
+ if (seen.has(value)) return "[Circular]";
803
+ if (depth >= MAX_ERROR_DEPTH) return "[MaxDepth]";
804
+ seen.add(value);
805
+ try {
806
+ if (Array.isArray(value)) return value.map((item) => scrubSerialized(item, clean, depth + 1, seen));
807
+ const out = {};
808
+ for (const [key, item] of Object.entries(value)) assignOwn(out, key, scrubSerialized(item, clean, depth + 1, seen));
809
+ return out;
810
+ } finally {
811
+ seen.delete(value);
812
+ }
813
+ }
814
+ /** Minimal copy used when the full sanitize step fails; never throws. */
815
+ function fallbackError(exception, clean) {
816
+ let name = "Error";
817
+ let message = "[Unserializable]";
818
+ try {
819
+ if (exception instanceof Error) {
820
+ name = exception.name;
821
+ message = clean(exception.message);
822
+ }
823
+ } catch {}
824
+ const copy = new Error(message);
825
+ copy.name = name;
826
+ assignOwn(copy, "serialization", "[Unserializable]");
827
+ return copy;
828
+ }
829
+ /**
830
+ * A fresh Error safe to log. Built from `serializeError` (class instances walked by key,
831
+ * so the logger's key-based redaction still sees `authorization`, `x-api-key`, ...), with
832
+ * string values scrubbed. Keeps name, message, stack, cause and custom properties.
833
+ * The original is untouched and this never throws.
834
+ */
835
+ function sanitizedError(exception, clean) {
836
+ try {
837
+ if (!(exception instanceof Error)) return new Error(clean(String(exception)));
838
+ const scrubbed = scrubSerialized(serializeError(exception), clean, 0, /* @__PURE__ */ new WeakSet());
839
+ const copy = new Error(String(scrubbed["message"] ?? ""));
840
+ for (const [key, value] of Object.entries(scrubbed)) {
841
+ if (key === "message") continue;
842
+ if (key === "stack" || key === "name") Object.defineProperty(copy, key, {
843
+ value,
844
+ writable: true,
845
+ configurable: true
846
+ });
847
+ else assignOwn(copy, key, value);
848
+ }
849
+ return copy;
850
+ } catch {
851
+ return fallbackError(exception, clean);
852
+ }
853
+ }
767
854
  let LogixiaExceptionFilter = class LogixiaExceptionFilter {
768
855
  constructor(logger, loggerConfig, options) {
856
+ var _loggerConfig$redact;
769
857
  this._options = options ?? {};
858
+ this._redactParams = buildNameSet(DEFAULT_REDACT_QUERY_PARAMS, [...(loggerConfig === null || loggerConfig === void 0 || (_loggerConfig$redact = loggerConfig.redact) === null || _loggerConfig$redact === void 0 ? void 0 : _loggerConfig$redact.queryParams) ?? [], ...this._options.redactQueryParams ?? []]);
770
859
  this._logger = logger ?? LogixiaLoggerModule._globalLogger ?? void 0;
771
860
  this._traceConfig = typeof (loggerConfig === null || loggerConfig === void 0 ? void 0 : loggerConfig.traceId) === "object" ? loggerConfig.traceId : void 0;
772
861
  }
@@ -776,18 +865,39 @@ let LogixiaExceptionFilter = class LogixiaExceptionFilter {
776
865
  const request = ctx.getRequest();
777
866
  const response = ctx.getResponse();
778
867
  const traceId = TraceContext.instance.getCurrentTraceId() ?? sanitizeIncomingId((_request$headers = request.headers) === null || _request$headers === void 0 ? void 0 : _request$headers["x-trace-id"]) ?? sanitizeIncomingId(request.id) ?? void 0;
779
- const { response: errorResponse, httpStatus } = ErrorResponseBuilder.build({
780
- exception,
781
- traceId,
782
- path: request.url ?? "/",
783
- startTime: request.startTime,
784
- exposeDebug: this._options.exposeDebug === true,
785
- exposeCause: this._options.exposeCause === true
786
- });
868
+ const rawUrl = request.originalUrl ?? request.url ?? "";
869
+ const url = redactUrlQuery(rawUrl, this._redactParams);
870
+ const secrets = sensitiveQueryValues(rawUrl, this._redactParams);
871
+ const clean = (text) => sanitizeText(text, this._redactParams, secrets);
872
+ const buildFor = (input) => {
873
+ const { response: built, httpStatus: status } = ErrorResponseBuilder.build({
874
+ exception: input,
875
+ traceId,
876
+ path: url || "/",
877
+ startTime: request.startTime,
878
+ exposeDebug: this._options.exposeDebug === true,
879
+ exposeCause: this._options.exposeCause === true
880
+ });
881
+ return {
882
+ errorResponse: scrubErrorResponse(built, clean),
883
+ httpStatus: status
884
+ };
885
+ };
886
+ let result;
887
+ try {
888
+ result = buildFor(exception);
889
+ } catch {
890
+ result = buildFor(fallbackError(exception, clean));
891
+ }
892
+ const { errorResponse, httpStatus } = result;
893
+ let logixiaException = false;
894
+ try {
895
+ logixiaException = isLogixiaException(exception);
896
+ } catch {}
787
897
  if (this._logger) {
788
898
  const requestMeta = {
789
899
  method: request.method ?? "",
790
- url: request.url ?? "",
900
+ url,
791
901
  status: httpStatus,
792
902
  ...errorResponse.meta.trace_id !== void 0 ? { trace_id: errorResponse.meta.trace_id } : {}
793
903
  };
@@ -795,10 +905,8 @@ let LogixiaExceptionFilter = class LogixiaExceptionFilter {
795
905
  internalError(`ExceptionFilter failed to write log entry: ${String(err)}`);
796
906
  };
797
907
  let logPromise;
798
- if (httpStatus >= 500) {
799
- const err = exception instanceof Error ? exception : new Error(String(exception));
800
- logPromise = this._logger.error(err, requestMeta);
801
- } else if (isLogixiaException(exception)) logPromise = this._logger.warn(`[${errorResponse.error.code}] ${errorResponse.error.message}`, requestMeta);
908
+ if (httpStatus >= 500) logPromise = this._logger.error(sanitizedError(exception, clean), requestMeta);
909
+ else if (logixiaException) logPromise = this._logger.warn(`[${errorResponse.error.code}] ${errorResponse.error.message}`, requestMeta);
802
910
  else logPromise = this._logger.warn(`[${httpStatus}] ${errorResponse.error.message}`, requestMeta);
803
911
  if (logPromise && typeof logPromise.catch === "function") logPromise.catch(onLogFailure);
804
912
  }