Skip to content

Warner Warning Levels

Learn to organize and filter warnings by severity level.

Basic Warning Levels

Warner supports multiple severity levels:

typescript
import { createWarner } from "@briklab/lib/warner";

const warner = createWarner();

// Add warnings at different levels
warner.warn("info", "Application started");
warner.warn("warning", "Deprecated API usage detected");
warner.warn("error", "Connection timeout occurred");
warner.warn("critical", "Database integrity check failed");

Live demo of warning levels:

Console
No logs yet.

Organizing by Level

Structure warnings hierarchically:

typescript
import { createWarner } from "@briklab/lib/warner";

class LevelOrganizer {
  static warner = createWarner();

  static logInfo(message: string) {
    this.warner.warn("info", message);
  }

  static logWarning(message: string) {
    this.warner.warn("warning", message);
  }

  static logError(message: string) {
    this.warner.warn("error", message);
  }

  static logCritical(message: string) {
    this.warner.warn("critical", message);
  }

  static getSummary() {
    const warnings = this.warner.finalize();
    return {
      info: warnings.filter((w) => w.level === "info").length,
      warning: warnings.filter((w) => w.level === "warning").length,
      error: warnings.filter((w) => w.level === "error").length,
      critical: warnings.filter((w) => w.level === "critical").length
    };
  }
}

// Usage
LevelOrganizer.logInfo("Starting data import");
LevelOrganizer.logWarning("Skipping invalid record");
LevelOrganizer.logError("Failed to process item 5");
console.log(LevelOrganizer.getSummary());

Filtering by Level

Extract warnings of specific severity:

typescript
import { createWarner } from "@briklab/lib/warner";

class LevelFilter {
  static warner = createWarner();

  static addWarnings() {
    this.warner.warn("info", "Cache cleared");
    this.warner.warn("warning", "Memory usage high");
    this.warner.warn("error", "API call failed");
    this.warner.warn("warning", "Retry attempted");
  }

  static getCriticalIssues() {
    return this.warner.finalize().filter((w) => w.level === "critical" || w.level === "error");
  }

  static getWarningsOnly() {
    return this.warner.finalize().filter((w) => w.level === "warning");
  }

  static getInfoMessages() {
    return this.warner.finalize().filter((w) => w.level === "info");
  }
}

// Usage
LevelFilter.addWarnings();
console.log("Critical issues:", LevelFilter.getCriticalIssues().length); // 1
console.log("Warnings:", LevelFilter.getWarningsOnly().length); // 2
console.log("Info messages:", LevelFilter.getInfoMessages().length); // 1

Level-Based Reporting

Generate reports by level:

typescript
import { createWarner } from "@briklab/lib/warner";

class LevelReporter {
  static warner = createWarner();

  static generateReport() {
    const warnings = this.warner.finalize();

    const levelCounts = {
      info: 0,
      warning: 0,
      error: 0,
      critical: 0
    };

    warnings.forEach((warning) => {
      if (warning.level in levelCounts) {
        levelCounts[warning.level as keyof typeof levelCounts]++;
      }
    });

    return `
Report Summary:
- Critical: ${levelCounts.critical}
- Errors: ${levelCounts.error}
- Warnings: ${levelCounts.warning}
- Info: ${levelCounts.info}
- Total: ${warnings.length}
    `.trim();
  }

  static shouldFail(): boolean {
    const warnings = this.warner.finalize();
    const hasErrors = warnings.some((w) => w.level === "error" || w.level === "critical");
    return hasErrors;
  }
}

// Usage
console.log(LevelReporter.generateReport());
console.log("Should fail build:", LevelReporter.shouldFail());

Next Steps