@zudojs/logger 1.4.3 → 1.5.0

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 (140) hide show
  1. package/README.md +34 -0
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -1
  4. package/dist/loggerContext/index.d.ts +0 -1
  5. package/dist/loggerContext/index.js +0 -1
  6. package/dist/loggerContext/loggerContext.core.d.ts +0 -1
  7. package/dist/loggerContext/loggerContext.core.js +0 -1
  8. package/dist/loggerContext/loggerContext.type.d.ts +0 -1
  9. package/dist/loggerContext/loggerContext.type.js +0 -1
  10. package/dist/loggerContext/loggerContextCreate.d.ts +0 -1
  11. package/dist/loggerContext/loggerContextCreate.js +0 -1
  12. package/dist/loggerContext/loggerContextSerialize.d.ts +0 -1
  13. package/dist/loggerContext/loggerContextSerialize.js +0 -1
  14. package/dist/loggerContext/loggerContextStorage.d.ts +0 -1
  15. package/dist/loggerContext/loggerContextStorage.js +0 -1
  16. package/dist/loggerCore/core/index.d.ts +0 -1
  17. package/dist/loggerCore/core/index.js +0 -1
  18. package/dist/loggerCore/core/loggerCore.context.d.ts +0 -1
  19. package/dist/loggerCore/core/loggerCore.context.js +0 -1
  20. package/dist/loggerCore/core/loggerCore.core.d.ts +0 -1
  21. package/dist/loggerCore/core/loggerCore.core.js +0 -1
  22. package/dist/loggerCore/core/loggerCore.type.d.ts +0 -1
  23. package/dist/loggerCore/core/loggerCore.type.js +0 -1
  24. package/dist/loggerCore/helpers/index.d.ts +0 -1
  25. package/dist/loggerCore/helpers/index.js +0 -1
  26. package/dist/loggerCore/helpers/loggerCore.helper.d.ts +0 -1
  27. package/dist/loggerCore/helpers/loggerCore.helper.js +0 -1
  28. package/dist/loggerCore/helpers/loggerCoreHelpers.d.ts +0 -1
  29. package/dist/loggerCore/helpers/loggerCoreHelpers.js +0 -1
  30. package/dist/loggerCore/helpers/loggerCoreMethods/index.d.ts +0 -1
  31. package/dist/loggerCore/helpers/loggerCoreMethods/index.js +0 -1
  32. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.child.d.ts +0 -1
  33. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.child.js +0 -1
  34. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.dispatch.d.ts +0 -1
  35. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.dispatch.js +0 -1
  36. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.entry.d.ts +0 -1
  37. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.entry.js +0 -1
  38. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.level.d.ts +0 -1
  39. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.level.js +0 -1
  40. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.lifecycle.d.ts +0 -1
  41. package/dist/loggerCore/helpers/loggerCoreMethods/loggerCoreMethods.lifecycle.js +0 -1
  42. package/dist/loggerCore/helpers/loggerCoreMethods.logLevels.d.ts +0 -1
  43. package/dist/loggerCore/helpers/loggerCoreMethods.logLevels.js +0 -1
  44. package/dist/loggerCore/helpers/loggerCoreMethods.loggerProps.d.ts +0 -1
  45. package/dist/loggerCore/helpers/loggerCoreMethods.loggerProps.js +0 -1
  46. package/dist/loggerCore/index.d.ts +0 -1
  47. package/dist/loggerCore/index.js +0 -1
  48. package/dist/loggerEntry/index.d.ts +0 -1
  49. package/dist/loggerEntry/index.js +0 -1
  50. package/dist/loggerEntry/loggerEntry.core.d.ts +0 -1
  51. package/dist/loggerEntry/loggerEntry.core.js +0 -1
  52. package/dist/loggerEntry/loggerEntry.secretFields.d.ts +0 -1
  53. package/dist/loggerEntry/loggerEntry.secretFields.js +0 -1
  54. package/dist/loggerEntry/loggerEntry.type.d.ts +0 -1
  55. package/dist/loggerEntry/loggerEntry.type.js +0 -1
  56. package/dist/loggerEntry/loggerEntryCreate.d.ts +0 -1
  57. package/dist/loggerEntry/loggerEntryCreate.js +0 -1
  58. package/dist/loggerEntry/loggerEntryHelpers/index.d.ts +2 -3
  59. package/dist/loggerEntry/loggerEntryHelpers/index.js +1 -2
  60. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.interfaces.d.ts +0 -1
  61. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.interfaces.js +0 -1
  62. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.sanitize.d.ts +18 -1
  63. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.sanitize.js +58 -2
  64. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.serialize.d.ts +0 -1
  65. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.serialize.js +0 -1
  66. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.types.d.ts +0 -1
  67. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.types.js +0 -1
  68. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.valueSerialize.d.ts +0 -1
  69. package/dist/loggerEntry/loggerEntryHelpers/loggerEntryHelpers.valueSerialize.js +6 -2
  70. package/dist/loggerEntry/loggerEntrySerialize.d.ts +0 -1
  71. package/dist/loggerEntry/loggerEntrySerialize.js +0 -1
  72. package/dist/loggerErrors/index.d.ts +0 -1
  73. package/dist/loggerErrors/index.js +0 -1
  74. package/dist/loggerErrors/loggerError.base.d.ts +0 -1
  75. package/dist/loggerErrors/loggerError.base.js +0 -1
  76. package/dist/loggerErrors/loggerError.helpers.d.ts +0 -1
  77. package/dist/loggerErrors/loggerError.helpers.js +0 -1
  78. package/dist/loggerFactory/index.d.ts +0 -1
  79. package/dist/loggerFactory/index.js +0 -1
  80. package/dist/loggerFactory/loggerFactory.core.d.ts +0 -1
  81. package/dist/loggerFactory/loggerFactory.core.js +0 -1
  82. package/dist/loggerFormatter/index.d.ts +0 -1
  83. package/dist/loggerFormatter/index.js +0 -1
  84. package/dist/loggerFormatter/loggerFormatter.core.d.ts +0 -1
  85. package/dist/loggerFormatter/loggerFormatter.core.js +0 -1
  86. package/dist/loggerFormatter/loggerFormatter.type.d.ts +0 -1
  87. package/dist/loggerFormatter/loggerFormatter.type.js +0 -1
  88. package/dist/loggerFormatter/loggerFormatterFormatters/index.d.ts +0 -1
  89. package/dist/loggerFormatter/loggerFormatterFormatters/index.js +0 -1
  90. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.context.d.ts +0 -1
  91. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.context.js +0 -1
  92. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.d.ts +0 -1
  93. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.js +0 -1
  94. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.json.d.ts +0 -1
  95. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.json.js +0 -1
  96. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.metadata.d.ts +0 -1
  97. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.metadata.js +0 -1
  98. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.text.d.ts +0 -1
  99. package/dist/loggerFormatter/loggerFormatterFormatters/loggerFormatterFormatters.text.js +0 -1
  100. package/dist/loggerFormatter/loggerFormatterGuard.d.ts +0 -1
  101. package/dist/loggerFormatter/loggerFormatterGuard.js +0 -1
  102. package/dist/loggerLevel/index.d.ts +0 -1
  103. package/dist/loggerLevel/index.js +0 -1
  104. package/dist/loggerLevel/loggerLevel.type.d.ts +0 -1
  105. package/dist/loggerLevel/loggerLevel.type.js +0 -1
  106. package/dist/loggerManager/index.d.ts +0 -1
  107. package/dist/loggerManager/index.js +0 -1
  108. package/dist/loggerManager/loggerManager.core.d.ts +0 -1
  109. package/dist/loggerManager/loggerManager.core.js +0 -1
  110. package/dist/loggerOptions/index.d.ts +0 -1
  111. package/dist/loggerOptions/index.js +0 -1
  112. package/dist/loggerOptions/loggerOptions.redact.d.ts +0 -1
  113. package/dist/loggerOptions/loggerOptions.redact.js +0 -1
  114. package/dist/loggerOptions/loggerOptions.type.d.ts +0 -1
  115. package/dist/loggerOptions/loggerOptions.type.js +0 -1
  116. package/dist/loggerTransport/index.d.ts +0 -1
  117. package/dist/loggerTransport/index.js +0 -1
  118. package/dist/loggerTransport/loggerTransport.core.d.ts +0 -1
  119. package/dist/loggerTransport/loggerTransport.core.js +0 -1
  120. package/dist/loggerTransport/loggerTransport.registry.d.ts +0 -1
  121. package/dist/loggerTransport/loggerTransport.registry.js +0 -1
  122. package/dist/loggerTransport/loggerTransport.type.d.ts +0 -1
  123. package/dist/loggerTransport/loggerTransport.type.js +0 -1
  124. package/dist/loggerTransport/loggerTransportComposite/index.d.ts +0 -1
  125. package/dist/loggerTransport/loggerTransportComposite/index.js +0 -1
  126. package/dist/loggerTransport/loggerTransportComposite/loggerTransportComposite.buffered.d.ts +0 -1
  127. package/dist/loggerTransport/loggerTransportComposite/loggerTransportComposite.buffered.js +0 -1
  128. package/dist/loggerTransport/loggerTransportComposite/loggerTransportComposite.d.ts +0 -1
  129. package/dist/loggerTransport/loggerTransportComposite/loggerTransportComposite.js +0 -1
  130. package/dist/loggerTransport/loggerTransportConsole/index.d.ts +0 -1
  131. package/dist/loggerTransport/loggerTransportConsole/index.js +0 -1
  132. package/dist/loggerTransport/loggerTransportConsole/loggerTransportConsole.core.d.ts +0 -1
  133. package/dist/loggerTransport/loggerTransportConsole/loggerTransportConsole.core.js +0 -1
  134. package/dist/loggerTransport/loggerTransportGuard.d.ts +0 -1
  135. package/dist/loggerTransport/loggerTransportGuard.js +0 -1
  136. package/dist/loggerTransport/loggerTransportHelpers/index.d.ts +0 -1
  137. package/dist/loggerTransport/loggerTransportHelpers/index.js +0 -1
  138. package/dist/loggerTransport/loggerTransportHelpers/loggerTransportHelpers.d.ts +0 -1
  139. package/dist/loggerTransport/loggerTransportHelpers/loggerTransportHelpers.js +0 -1
  140. package/package.json +2 -2
package/README.md CHANGED
@@ -28,6 +28,34 @@ logger.error("Connection failed", { error: err.message });
28
28
  await logger.flush(); // drain in-flight writes before exit
29
29
  ```
30
30
 
31
+ ## Logging errors
32
+
33
+ ```typescript
34
+ logger.log(LoggerLevel.ERROR, "payment failed", {
35
+ error: err,
36
+ metadata: { orderId },
37
+ }); // typed: err is the entry's `error`, stack included
38
+
39
+ logger.error("payment failed", { err }); // err becomes plain data in metadata
40
+ ```
41
+
42
+ The level methods take `(message, metadata?)`. In JavaScript, or loosely
43
+ typed TypeScript, `logger.error("payment failed", err)` also works at
44
+ runtime — the `Error` is recorded as the entry's `error` — but that call
45
+ does not type-check; the typed way to attach an error is
46
+ `log(level, message, { error, metadata })`. (The signature is kept single
47
+ on purpose: an overload or a widened union broke custom `Logger`
48
+ implementations and structural logger types.)
49
+
50
+ An `Error` placed _inside_ metadata or context (`{ err }`, `{ cause: err }`,
51
+ nested anywhere) is normalized when the entry is built into
52
+ `{ name, message, stack, ...ownFields, cause }`, with secret-named own
53
+ fields redacted and a self-referential `cause` shown as `"[Circular]"`, so
54
+ a custom transport that stringifies `entry.metadata` sees the error rather
55
+ than `{}`. `isLogErrorValue(value)` tells such an object apart from
56
+ ordinary metadata; the text formatter's `includeStackTrace: false` still
57
+ leaves its `stack` out.
58
+
31
59
  ## Levels
32
60
 
33
61
  `fatal` (0), `error` (1), `warn` (2), `info` (3), `debug` (4), `trace`
@@ -159,6 +187,12 @@ createLogger({ redact: { enabled: false } }); // same as redact: false
159
187
  `replacement`). `true` or omitting it keeps the default. Child loggers inherit
160
188
  the parent's setting.
161
189
 
190
+ This is `@zudojs/logger`'s own redaction and it needs no setup.
191
+ `@zudojs/core`'s `ConsoleLogger` is a different logger with a different
192
+ mechanism — a `createLogRedactor()` hook with its own key list — and this
193
+ package has no `createLogRedactor`. If an application uses both, configure
194
+ each; a key added to one is not redacted by the other.
195
+
162
196
  ## Log injection
163
197
 
164
198
  Text-shaped formatters escape control characters (C0, DEL, C1 and
package/dist/index.d.ts CHANGED
@@ -13,4 +13,3 @@ export * from "./loggerErrors/index.js";
13
13
  export * from "./loggerManager/index.js";
14
14
  export * from "./loggerFactory/index.js";
15
15
  export * from "./loggerLevel/index.js";
16
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -23,4 +23,3 @@ export * from "./loggerManager/index.js";
23
23
  export * from "./loggerFactory/index.js";
24
24
  // Level
25
25
  export * from "./loggerLevel/index.js";
26
- //# sourceMappingURL=index.js.map
@@ -6,4 +6,3 @@
6
6
  export * from "./loggerContext.type.js";
7
7
  export * from "./loggerContext.core.js";
8
8
  export * from "./loggerContextStorage.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,3 @@
6
6
  export * from "./loggerContext.type.js";
7
7
  export * from "./loggerContext.core.js";
8
8
  export * from "./loggerContextStorage.js";
9
- //# sourceMappingURL=index.js.map
@@ -5,4 +5,3 @@ export type { LoggerContextValue, LoggerContextData, LoggerContextIdentifiers, L
5
5
  export { createLoggerContextStorage } from "./loggerContextStorage.js";
6
6
  export { createLoggerContextId, createLoggerContext, createEmptyLoggerContext, mergeLoggerContexts, withLoggerContext, withLoggerIdentifiers, } from "./loggerContextCreate.js";
7
7
  export { contextToLogMetadata, serializeLoggerContext, isLoggerContext, getCurrentLoggerContextMetadata, } from "./loggerContextSerialize.js";
8
- //# sourceMappingURL=loggerContext.core.d.ts.map
@@ -4,4 +4,3 @@
4
4
  export { createLoggerContextStorage } from "./loggerContextStorage.js";
5
5
  export { createLoggerContextId, createLoggerContext, createEmptyLoggerContext, mergeLoggerContexts, withLoggerContext, withLoggerIdentifiers, } from "./loggerContextCreate.js";
6
6
  export { contextToLogMetadata, serializeLoggerContext, isLoggerContext, getCurrentLoggerContextMetadata, } from "./loggerContextSerialize.js";
7
- //# sourceMappingURL=loggerContext.core.js.map
@@ -85,4 +85,3 @@ export interface LoggerSource {
85
85
  readonly column?: number;
86
86
  readonly function?: string;
87
87
  }
88
- //# sourceMappingURL=loggerContext.type.d.ts.map
@@ -2,4 +2,3 @@
2
2
  * Logger context types.
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=loggerContext.type.js.map
@@ -28,4 +28,3 @@ export declare function withLoggerContext(context: LoggerContext, metadata: Logg
28
28
  * Extends a logger context with identifiers.
29
29
  */
30
30
  export declare function withLoggerIdentifiers(context: LoggerContext, identifiers: LoggerContextIdentifiers): LoggerContext;
31
- //# sourceMappingURL=loggerContextCreate.d.ts.map
@@ -83,4 +83,3 @@ export function withLoggerIdentifiers(context, identifiers) {
83
83
  ...identifiers,
84
84
  });
85
85
  }
86
- //# sourceMappingURL=loggerContextCreate.js.map
@@ -21,4 +21,3 @@ export declare function isLoggerContext(value: unknown): value is LoggerContext;
21
21
  * Creates a context-aware metadata object.
22
22
  */
23
23
  export declare function getCurrentLoggerContextMetadata(storage: LoggerContextStorage): LogMetadata;
24
- //# sourceMappingURL=loggerContextSerialize.d.ts.map
@@ -48,4 +48,3 @@ export function getCurrentLoggerContextMetadata(storage) {
48
48
  }
49
49
  return contextToLogMetadata(context);
50
50
  }
51
- //# sourceMappingURL=loggerContextSerialize.js.map
@@ -10,4 +10,3 @@ import type { LoggerContextStorage } from "./loggerContext.core.js";
10
10
  * Node-specific dependencies.
11
11
  */
12
12
  export declare function createLoggerContextStorage(): LoggerContextStorage;
13
- //# sourceMappingURL=loggerContextStorage.d.ts.map
@@ -42,4 +42,3 @@ export function createLoggerContextStorage() {
42
42
  },
43
43
  };
44
44
  }
45
- //# sourceMappingURL=loggerContextStorage.js.map
@@ -6,4 +6,3 @@
6
6
  export * from "./loggerCore.type.js";
7
7
  export * from "./loggerCore.core.js";
8
8
  export * from "./loggerCore.context.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,3 @@
6
6
  export * from "./loggerCore.type.js";
7
7
  export * from "./loggerCore.core.js";
8
8
  export * from "./loggerCore.context.js";
9
- //# sourceMappingURL=index.js.map
@@ -39,4 +39,3 @@ export declare class ContextLogger implements Logger {
39
39
  close(): Promise<void>;
40
40
  private run;
41
41
  }
42
- //# sourceMappingURL=loggerCore.context.d.ts.map
@@ -79,4 +79,3 @@ export class ContextLogger {
79
79
  this.storage.run(this.context, callback);
80
80
  }
81
81
  }
82
- //# sourceMappingURL=loggerCore.context.js.map
@@ -75,4 +75,3 @@ export declare class ZudojsLogger implements Logger, ZudojsLoggerContext {
75
75
  * Creates a Zudojs logger.
76
76
  */
77
77
  export declare function createLogger(options?: LoggerOptions): Logger;
78
- //# sourceMappingURL=loggerCore.core.d.ts.map
@@ -169,4 +169,3 @@ export class ZudojsLogger {
169
169
  export function createLogger(options = {}) {
170
170
  return new ZudojsLogger(options);
171
171
  }
172
- //# sourceMappingURL=loggerCore.core.js.map
@@ -37,4 +37,3 @@ export interface Logger {
37
37
  flush(): Promise<void>;
38
38
  close(): Promise<void>;
39
39
  }
40
- //# sourceMappingURL=loggerCore.type.d.ts.map
@@ -2,4 +2,3 @@
2
2
  * Logger core types and interfaces.
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=loggerCore.type.js.map
@@ -8,4 +8,3 @@ export * from "./loggerCoreHelpers.js";
8
8
  export * from "./loggerCoreMethods.loggerProps.js";
9
9
  export * from "./loggerCoreMethods.logLevels.js";
10
10
  export * from "./loggerCoreMethods/index.js";
11
- //# sourceMappingURL=index.d.ts.map
@@ -8,4 +8,3 @@ export * from "./loggerCoreHelpers.js";
8
8
  export * from "./loggerCoreMethods.loggerProps.js";
9
9
  export * from "./loggerCoreMethods.logLevels.js";
10
10
  export * from "./loggerCoreMethods/index.js";
11
- //# sourceMappingURL=index.js.map
@@ -26,4 +26,3 @@ export declare function withLoggerContext<T>(logger: Logger, context: LoggerCont
26
26
  * Creates a default application logger.
27
27
  */
28
28
  export declare function createDefaultLogger(name?: string): Logger;
29
- //# sourceMappingURL=loggerCore.helper.d.ts.map
@@ -45,4 +45,3 @@ export function createDefaultLogger(name = "zudojs") {
45
45
  transports: [createConsoleLoggerTransport()],
46
46
  });
47
47
  }
48
- //# sourceMappingURL=loggerCore.helper.js.map
@@ -18,4 +18,3 @@ export declare function assertMutable(mutable: boolean): void;
18
18
  * Handles infrastructure errors (transport/formatter errors).
19
19
  */
20
20
  export declare function handleInfrastructureError(throwTransportErrors: boolean, error: Error): void;
21
- //# sourceMappingURL=loggerCoreHelpers.d.ts.map
@@ -50,4 +50,3 @@ export function handleInfrastructureError(throwTransportErrors, error) {
50
50
  throw error;
51
51
  }
52
52
  }
53
- //# sourceMappingURL=loggerCoreHelpers.js.map
@@ -8,4 +8,3 @@ export { dispatchEntry, dispatchEntrySync, } from "./loggerCoreMethods.dispatch.
8
8
  export { logAtLevel, levelOptions } from "./loggerCoreMethods.level.js";
9
9
  export { childLogger, withContextLogger } from "./loggerCoreMethods.child.js";
10
10
  export { setLoggerLevel, enableLogger, disableLogger, flushLogger, closeLogger, } from "./loggerCoreMethods.lifecycle.js";
11
- //# sourceMappingURL=index.d.ts.map
@@ -8,4 +8,3 @@ export { dispatchEntry, dispatchEntrySync, } from "./loggerCoreMethods.dispatch.
8
8
  export { logAtLevel, levelOptions } from "./loggerCoreMethods.level.js";
9
9
  export { childLogger, withContextLogger } from "./loggerCoreMethods.child.js";
10
10
  export { setLoggerLevel, enableLogger, disableLogger, flushLogger, closeLogger, } from "./loggerCoreMethods.lifecycle.js";
11
- //# sourceMappingURL=index.js.map
@@ -13,4 +13,3 @@ export declare function childLogger(ctx: ZudojsLoggerContext, options?: ChildLog
13
13
  * Creates a logger with scoped context.
14
14
  */
15
15
  export declare function withContextLogger(ctx: ZudojsLoggerContext, context: LoggerContext): Logger;
16
- //# sourceMappingURL=loggerCoreMethods.child.d.ts.map
@@ -21,4 +21,3 @@ export function withContextLogger(ctx, context) {
21
21
  // scope THAT storage for the context to reach created entries.
22
22
  return new ContextLogger(child, context, ctx.contextStorage);
23
23
  }
24
- //# sourceMappingURL=loggerCoreMethods.child.js.map
@@ -18,4 +18,3 @@ export declare function dispatchEntry(configuration: LoggerConfiguration, entry:
18
18
  * both settings behaved identically.
19
19
  */
20
20
  export declare function dispatchEntrySync(configuration: LoggerConfiguration, entry: LoggerEntry, handleError: (error: Error) => void): void | Promise<void>;
21
- //# sourceMappingURL=loggerCoreMethods.dispatch.d.ts.map
@@ -228,4 +228,3 @@ export function dispatchEntrySync(configuration, entry, handleError) {
228
228
  }
229
229
  return Promise.all(pending).then(() => undefined);
230
230
  }
231
- //# sourceMappingURL=loggerCoreMethods.dispatch.js.map
@@ -15,4 +15,3 @@ import type { LoggerConfiguration, LogOptions } from "../../../loggerOptions/log
15
15
  export declare function createEntry(configuration: LoggerConfiguration, contextStorage: {
16
16
  get(): import("../../../loggerContext/loggerContext.core.js").LoggerContext | undefined;
17
17
  }, level: LoggerLevel, message: string, options: LogOptions, onMetadataError?: (key: string, error: unknown) => void): LoggerEntry;
18
- //# sourceMappingURL=loggerCoreMethods.entry.d.ts.map
@@ -62,4 +62,3 @@ export function createEntry(configuration, contextStorage, level, message, optio
62
62
  };
63
63
  return createLoggerEntry(input);
64
64
  }
65
- //# sourceMappingURL=loggerCoreMethods.entry.js.map
@@ -15,4 +15,3 @@ export declare function levelOptions(metadata: LogOptions["metadata"] | undefine
15
15
  * Level logging methods extracted from ZudojsLogger.
16
16
  */
17
17
  export declare function logAtLevel(ctx: ZudojsLoggerContext, level: LoggerLevel, message: string, options?: LogOptions): void;
18
- //# sourceMappingURL=loggerCoreMethods.level.d.ts.map
@@ -60,4 +60,3 @@ export function logAtLevel(ctx, level, message, options = {}) {
60
60
  ctx.handleInfrastructureError(failure);
61
61
  }
62
62
  }
63
- //# sourceMappingURL=loggerCoreMethods.level.js.map
@@ -32,4 +32,3 @@ export declare function flushLogger(ctx: ZudojsLoggerContext): Promise<void>;
32
32
  * the failures are rethrown afterwards.
33
33
  */
34
34
  export declare function closeLogger(ctx: ZudojsLoggerContext): Promise<void>;
35
- //# sourceMappingURL=loggerCoreMethods.lifecycle.d.ts.map
@@ -116,4 +116,3 @@ export async function closeLogger(ctx) {
116
116
  }
117
117
  throwCollectedFailures(failures, "Logger close failed.");
118
118
  }
119
- //# sourceMappingURL=loggerCoreMethods.lifecycle.js.map
@@ -17,4 +17,3 @@ export declare function createLogMethods(ctx: ZudojsLoggerContext): {
17
17
  trace: (message: string, metadata?: LogMetadata) => void;
18
18
  log: (level: LoggerLevel, message: string, options?: LogOptions) => void;
19
19
  };
20
- //# sourceMappingURL=loggerCoreMethods.logLevels.d.ts.map
@@ -17,4 +17,3 @@ export function createLogMethods(ctx) {
17
17
  log: (level, message, options) => logAtLevel(ctx, level, message, options),
18
18
  };
19
19
  }
20
- //# sourceMappingURL=loggerCoreMethods.logLevels.js.map
@@ -15,4 +15,3 @@ export declare function getLoggerLevel(ctx: ZudojsLoggerContext): LoggerLevel;
15
15
  * Gets whether the logger is enabled.
16
16
  */
17
17
  export declare function getLoggerEnabled(ctx: ZudojsLoggerContext): boolean;
18
- //# sourceMappingURL=loggerCoreMethods.loggerProps.d.ts.map
@@ -22,4 +22,3 @@ export function getLoggerLevel(ctx) {
22
22
  export function getLoggerEnabled(ctx) {
23
23
  return !ctx.isDisposed() && ctx.configuration.enabled;
24
24
  }
25
- //# sourceMappingURL=loggerCoreMethods.loggerProps.js.map
@@ -5,4 +5,3 @@
5
5
  */
6
6
  export * from "./core/index.js";
7
7
  export * from "./helpers/index.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -5,4 +5,3 @@
5
5
  */
6
6
  export * from "./core/index.js";
7
7
  export * from "./helpers/index.js";
8
- //# sourceMappingURL=index.js.map
@@ -6,4 +6,3 @@
6
6
  export * from "./loggerEntryHelpers/index.js";
7
7
  export * from "./loggerEntry.core.js";
8
8
  export { DEFAULT_LOGGER_SECRET_FIELDS, createDefaultSecretFieldMatcher, } from "./loggerEntry.secretFields.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,3 @@
6
6
  export * from "./loggerEntryHelpers/index.js";
7
7
  export * from "./loggerEntry.core.js";
8
8
  export { DEFAULT_LOGGER_SECRET_FIELDS, createDefaultSecretFieldMatcher, } from "./loggerEntry.secretFields.js";
9
- //# sourceMappingURL=index.js.map
@@ -16,4 +16,3 @@ export declare function normalizeLogMetadata(value: unknown): LogMetadata;
16
16
  * Creates a LoggerEntry from an Error.
17
17
  */
18
18
  export declare function createErrorLoggerEntry(error: Error, level: LoggerLevel, message?: string, metadata?: LogMetadata): LoggerEntry;
19
- //# sourceMappingURL=loggerEntry.core.d.ts.map
@@ -42,4 +42,3 @@ export function createErrorLoggerEntry(error, level, message, metadata) {
42
42
  error,
43
43
  });
44
44
  }
45
- //# sourceMappingURL=loggerEntry.core.js.map
@@ -16,4 +16,3 @@ export declare const DEFAULT_LOGGER_SECRET_FIELDS: readonly string[];
16
16
  * Builds the default secret-field predicate from a word list.
17
17
  */
18
18
  export declare function createDefaultSecretFieldMatcher(fields?: readonly string[]): (key: string) => boolean;
19
- //# sourceMappingURL=loggerEntry.secretFields.d.ts.map
@@ -87,4 +87,3 @@ export function createDefaultSecretFieldMatcher(fields = DEFAULT_LOGGER_SECRET_F
87
87
  return SUBSTRING_SECRET_WORDS.some((word) => compact.includes(word));
88
88
  };
89
89
  }
90
- //# sourceMappingURL=loggerEntry.secretFields.js.map
@@ -5,4 +5,3 @@
5
5
  * types from their new location.
6
6
  */
7
7
  export type { LogValue, LogMetadata, LoggerSource, LoggerEntryContext, LoggerEntry, LoggerEntryInput, } from "./loggerEntryHelpers/index.js";
8
- //# sourceMappingURL=loggerEntry.type.d.ts.map
@@ -5,4 +5,3 @@
5
5
  * types from their new location.
6
6
  */
7
7
  export {};
8
- //# sourceMappingURL=loggerEntry.type.js.map
@@ -6,4 +6,3 @@ import type { LoggerEntry, LoggerEntryInput } from "./loggerEntry.type.js";
6
6
  * Creates a normalized LoggerEntry.
7
7
  */
8
8
  export declare function createLoggerEntry(input: LoggerEntryInput): LoggerEntry;
9
- //# sourceMappingURL=loggerEntryCreate.d.ts.map
@@ -38,4 +38,3 @@ export function createLoggerEntry(input) {
38
38
  environment: input.environment,
39
39
  });
40
40
  }
41
- //# sourceMappingURL=loggerEntryCreate.js.map
@@ -6,6 +6,5 @@
6
6
  export type { LogValue, LogMetadata, LoggerSource, LoggerEntryContext, } from "./loggerEntryHelpers.types.js";
7
7
  export type { LoggerEntry, LoggerEntryInput, } from "./loggerEntryHelpers.interfaces.js";
8
8
  export { serializeLoggerEntry, serializeLoggerError, serializeLoggerValue, loggerLevelNameFallback, } from "./loggerEntryHelpers.serialize.js";
9
- export { LOGGER_REDACTION_TOKEN, LOGGER_UNREADABLE_TOKEN, DEFAULT_LOGGER_SECRET_PATTERN, escapeLogText, hasLogControlCharacters, createSecretMatcher, redactLogValue, } from "./loggerEntryHelpers.sanitize.js";
10
- export type { LoggerRedactionOptions } from "./loggerEntryHelpers.sanitize.js";
11
- //# sourceMappingURL=index.d.ts.map
9
+ export { LOGGER_ERROR_VALUE, LOGGER_REDACTION_TOKEN, LOGGER_UNREADABLE_TOKEN, DEFAULT_LOGGER_SECRET_PATTERN, escapeLogText, hasLogControlCharacters, createSecretMatcher, isLogErrorValue, redactLogValue, } from "./loggerEntryHelpers.sanitize.js";
10
+ export type { LogErrorValue, LoggerRedactionOptions, } from "./loggerEntryHelpers.sanitize.js";
@@ -4,5 +4,4 @@
4
4
  * Logger entry helper types and utilities.
5
5
  */
6
6
  export { serializeLoggerEntry, serializeLoggerError, serializeLoggerValue, loggerLevelNameFallback, } from "./loggerEntryHelpers.serialize.js";
7
- export { LOGGER_REDACTION_TOKEN, LOGGER_UNREADABLE_TOKEN, DEFAULT_LOGGER_SECRET_PATTERN, escapeLogText, hasLogControlCharacters, createSecretMatcher, redactLogValue, } from "./loggerEntryHelpers.sanitize.js";
8
- //# sourceMappingURL=index.js.map
7
+ export { LOGGER_ERROR_VALUE, LOGGER_REDACTION_TOKEN, LOGGER_UNREADABLE_TOKEN, DEFAULT_LOGGER_SECRET_PATTERN, escapeLogText, hasLogControlCharacters, createSecretMatcher, isLogErrorValue, redactLogValue, } from "./loggerEntryHelpers.sanitize.js";
@@ -92,4 +92,3 @@ export interface LoggerEntryInput {
92
92
  readonly hostname?: string;
93
93
  readonly environment?: string;
94
94
  }
95
- //# sourceMappingURL=loggerEntryHelpers.interfaces.d.ts.map
@@ -2,4 +2,3 @@
2
2
  * Logger entry interfaces.
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=loggerEntryHelpers.interfaces.js.map
@@ -69,6 +69,24 @@ export declare function hasLogControlCharacters(value: string): boolean;
69
69
  * Builds a predicate deciding whether a field name holds a secret.
70
70
  */
71
71
  export declare function createSecretMatcher(options?: LoggerRedactionOptions): (key: string) => boolean;
72
+ /**
73
+ * Marks a plain object that {@link redactLogValue} produced from an
74
+ * `Error`, so a serializer can still tell it apart from ordinary metadata
75
+ * (the text formatter leaves its `stack` out when `includeStackTrace` is
76
+ * off). The property is a non-enumerable symbol: `JSON.stringify`, spreads
77
+ * and `Object.keys` never see it.
78
+ */
79
+ export declare const LOGGER_ERROR_VALUE: unique symbol;
80
+ /** A normalized `Error` as it appears inside entry metadata and context. */
81
+ export interface LogErrorValue {
82
+ readonly name: string;
83
+ readonly message: string;
84
+ readonly stack?: string;
85
+ readonly cause?: unknown;
86
+ readonly [key: string]: unknown;
87
+ }
88
+ /** True when `value` is an `Error` normalized by {@link redactLogValue}. */
89
+ export declare function isLogErrorValue(value: unknown): value is LogErrorValue;
72
90
  /**
73
91
  * Recursively replaces secret-named fields with a redaction token.
74
92
  *
@@ -83,4 +101,3 @@ export declare function createSecretMatcher(options?: LoggerRedactionOptions): (
83
101
  * object merely referenced twice in one payload is logged both times.
84
102
  */
85
103
  export declare function redactLogValue(value: unknown, isSecret: (key: string) => boolean, replacement?: string, seen?: WeakSet<object>, onReadError?: (key: string, error: unknown) => void): unknown;
86
- //# sourceMappingURL=loggerEntryHelpers.sanitize.d.ts.map
@@ -105,6 +105,48 @@ function defineLogProperty(target, key, value) {
105
105
  configurable: true,
106
106
  });
107
107
  }
108
+ /**
109
+ * Marks a plain object that {@link redactLogValue} produced from an
110
+ * `Error`, so a serializer can still tell it apart from ordinary metadata
111
+ * (the text formatter leaves its `stack` out when `includeStackTrace` is
112
+ * off). The property is a non-enumerable symbol: `JSON.stringify`, spreads
113
+ * and `Object.keys` never see it.
114
+ */
115
+ export const LOGGER_ERROR_VALUE = Symbol.for("zudojs.logger.errorValue");
116
+ /** True when `value` is an `Error` normalized by {@link redactLogValue}. */
117
+ export function isLogErrorValue(value) {
118
+ return (typeof value === "object" &&
119
+ value !== null &&
120
+ value[LOGGER_ERROR_VALUE] === true);
121
+ }
122
+ /**
123
+ * Copies an `Error` into a plain object: `name`, `message` and `stack`
124
+ * first (they are non-enumerable on the error itself, which is why a
125
+ * stringified error is `{}`), then its own enumerable fields with their
126
+ * descriptors intact so a getter is still read by the redaction walk, then
127
+ * `cause`. The walk redacts and descends into all of them.
128
+ */
129
+ function errorToPlainObject(error) {
130
+ const plain = {};
131
+ defineLogProperty(plain, "name", error.name);
132
+ defineLogProperty(plain, "message", error.message);
133
+ if (typeof error.stack === "string") {
134
+ defineLogProperty(plain, "stack", error.stack);
135
+ }
136
+ for (const key of Object.keys(error)) {
137
+ if (Object.hasOwn(plain, key))
138
+ continue;
139
+ const descriptor = Object.getOwnPropertyDescriptor(error, key);
140
+ if (descriptor)
141
+ Object.defineProperty(plain, key, descriptor);
142
+ }
143
+ if (!Object.hasOwn(plain, "cause") &&
144
+ "cause" in error &&
145
+ error.cause !== undefined) {
146
+ defineLogProperty(plain, "cause", error.cause);
147
+ }
148
+ return plain;
149
+ }
108
150
  /**
109
151
  * Recursively replaces secret-named fields with a redaction token.
110
152
  *
@@ -122,12 +164,27 @@ export function redactLogValue(value, isSecret, replacement = LOGGER_REDACTION_T
122
164
  if (value === null || typeof value !== "object") {
123
165
  return value;
124
166
  }
125
- if (value instanceof Date || value instanceof Error) {
167
+ if (value instanceof Date) {
126
168
  return value;
127
169
  }
128
170
  if (seen.has(value)) {
129
171
  return "[Circular]";
130
172
  }
173
+ // An Error keeps name/message/stack non-enumerable, so a transport that
174
+ // stringified `entry.metadata` saw `{ cause: {} }`. It becomes plain data
175
+ // here, before the entry is frozen, so every transport sees the same
176
+ // thing; its own fields are redacted like any other metadata.
177
+ if (value instanceof Error) {
178
+ seen.add(value);
179
+ try {
180
+ const redacted = redactLogValue(errorToPlainObject(value), isSecret, replacement, seen, onReadError);
181
+ Object.defineProperty(redacted, LOGGER_ERROR_VALUE, { value: true });
182
+ return redacted;
183
+ }
184
+ finally {
185
+ seen.delete(value);
186
+ }
187
+ }
131
188
  seen.add(value);
132
189
  try {
133
190
  const descend = (item) => redactLogValue(item, isSecret, replacement, seen, onReadError);
@@ -168,4 +225,3 @@ export function redactLogValue(value, isSecret, replacement = LOGGER_REDACTION_T
168
225
  seen.delete(value);
169
226
  }
170
227
  }
171
- //# sourceMappingURL=loggerEntryHelpers.sanitize.js.map
@@ -18,4 +18,3 @@ export { serializeLoggerError, serializeLoggerValue, } from "./loggerEntryHelper
18
18
  * a circular dependency into logger-entry.ts.
19
19
  */
20
20
  export declare function loggerLevelNameFallback(level: import("../../loggerLevel/loggerLevel.type.js").LoggerLevel): import("../../loggerLevel/loggerLevel.type.js").LoggerLevelName;
21
- //# sourceMappingURL=loggerEntryHelpers.serialize.d.ts.map
@@ -53,4 +53,3 @@ export function loggerLevelNameFallback(level) {
53
53
  throw new InvalidLoggerLevelError(level);
54
54
  }
55
55
  }
56
- //# sourceMappingURL=loggerEntryHelpers.serialize.js.map
@@ -73,4 +73,3 @@ export interface LoggerEntryContext {
73
73
  */
74
74
  readonly metadata?: LogMetadata;
75
75
  }
76
- //# sourceMappingURL=loggerEntryHelpers.types.d.ts.map
@@ -2,4 +2,3 @@
2
2
  * Logger entry value and metadata types.
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=loggerEntryHelpers.types.js.map
@@ -22,4 +22,3 @@ export declare function serializeLoggerError(error: {
22
22
  * stack out of every Error found in the value.
23
23
  */
24
24
  export declare function serializeLoggerValue(value: unknown, seen?: WeakSet<object>, includeErrorStack?: boolean): unknown;
25
- //# sourceMappingURL=loggerEntryHelpers.valueSerialize.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Logger entry value serialization.
3
3
  */
4
- import { LOGGER_UNREADABLE_TOKEN } from "./loggerEntryHelpers.sanitize.js";
4
+ import { LOGGER_UNREADABLE_TOKEN, isLogErrorValue, } from "./loggerEntryHelpers.sanitize.js";
5
5
  /**
6
6
  * Serializes an error-like object into a plain object.
7
7
  *
@@ -77,7 +77,12 @@ export function serializeLoggerValue(value, seen = new WeakSet(), includeErrorSt
77
77
  }
78
78
  return result;
79
79
  }
80
+ // An Error already normalized by redaction is plain data; honour
81
+ // `includeErrorStack` for it exactly as for a live Error.
82
+ const omitStack = !includeErrorStack && isLogErrorValue(value);
80
83
  for (const key of Object.keys(value)) {
84
+ if (omitStack && key === "stack")
85
+ continue;
81
86
  let item;
82
87
  try {
83
88
  item = value[key];
@@ -94,4 +99,3 @@ export function serializeLoggerValue(value, seen = new WeakSet(), includeErrorSt
94
99
  seen.delete(value);
95
100
  }
96
101
  }
97
- //# sourceMappingURL=loggerEntryHelpers.valueSerialize.js.map
@@ -5,4 +5,3 @@
5
5
  * serialization functions from their new location.
6
6
  */
7
7
  export { serializeLoggerEntry, serializeLoggerError, serializeLoggerValue, loggerLevelNameFallback, } from "./loggerEntryHelpers/loggerEntryHelpers.serialize.js";
8
- //# sourceMappingURL=loggerEntrySerialize.d.ts.map
@@ -5,4 +5,3 @@
5
5
  * serialization functions from their new location.
6
6
  */
7
7
  export { serializeLoggerEntry, serializeLoggerError, serializeLoggerValue, loggerLevelNameFallback, } from "./loggerEntryHelpers/loggerEntryHelpers.serialize.js";
8
- //# sourceMappingURL=loggerEntrySerialize.js.map