summaryrefslogtreecommitdiff
path: root/shared/logger/src/index.ts
blob: dc786e3f9ce882eef4d89d9775ec2c5f3e4c4a93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
}