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); // 1Level-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
- Advanced Usage: Complex patterns
- Examples: Real-world scenarios
- API Reference: Complete documentation