← Back to scenarios
ScenarioCatalog DB

Logger singleton

Use one shared logger instance so every component writes through the same output pipeline.

Problem

An application must provide a consistent logging pipeline across components without creating competing logger instances or scattering output configuration throughout the codebase.

Related patterns

Implementations

Singleton

TypeScriptApplication

Singleton in TypeScript

Provides one lazily initialized application configuration store with a controlled shared access point.

TypeScript
class ApplicationConfig {
  private static instance: ApplicationConfig | undefined;

  private readonly values = new Map<string, string>();

  private constructor() {
    this.values.set("region", "us-east-1");
  }

  static getInstance(): ApplicationConfig {
    if (!ApplicationConfig.instance) {
      ApplicationConfig.instance = new ApplicationConfig();
    }

    return ApplicationConfig.instance;
  }

  get(key: string): string | undefined {
    return this.values.get(key);
  }

  set(key: string, value: string) {
    this.values.set(key, value);
  }
}

const configA = ApplicationConfig.getInstance();
const configB = ApplicationConfig.getInstance();

configA.set("feature.checkoutV2", "enabled");

console.log(configA === configB); // true
console.log(configB.get("feature.checkoutV2")); // enabled

Associated technologies