Files
fluxer/fluxer_api/src/api/Logger.ts
T

29 lines
706 B
TypeScript

// SPDX-License-Identifier: AGPL-3.0-or-later
import type {ILogger} from './ILogger';
let _logger: ILogger | null = null;
export function initializeLogger(logger: ILogger): void {
if (_logger !== null) {
return;
}
_logger = logger;
}
export const Logger: ILogger = new Proxy({} as ILogger, {
get(_target, prop: keyof ILogger | symbol) {
if (_logger === null) {
throw new Error('Logger has not been initialized. Call initializeLogger() first.');
}
const value = _logger[prop as keyof ILogger];
if (typeof value === 'function') {
return value.bind(_logger);
}
return value;
},
set() {
throw new Error('Cannot modify Logger directly. Use initializeLogger() instead.');
},
});