summaryrefslogtreecommitdiff
path: root/shared/logger/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'shared/logger/src/index.ts')
-rw-r--r--shared/logger/src/index.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/shared/logger/src/index.ts b/shared/logger/src/index.ts
new file mode 100644
index 0000000..dc786e3
--- /dev/null
+++ b/shared/logger/src/index.ts
@@ -0,0 +1,31 @@
+import { getContext } from 'svelte';
+import type { Logger, LoggerFactory } from './types';
+
+export * from './composite';
+export * from './console';
+export * from './deferred';
+export * from './recording';
+export * from './sampled';
+export * from './types';
+export * from './void';
+
+const CONTEXT_NAME = 'loggerFactory';
+
+export function setContext(
+ context: Map<string, unknown>,
+ factory: LoggerFactory,
+): void {
+ context.set(CONTEXT_NAME, factory);
+}
+
+export function loggerFor(subject: string): Logger {
+ const factory = getContext(CONTEXT_NAME) as LoggerFactory | undefined;
+
+ if (!factory) {
+ throw new Error(
+ 'loggerFor called before setContext or outside of svelte component init',
+ );
+ }
+
+ return factory.loggerFor(subject);
+}