KOS Log Manager Model - Centralized runtime log level management for the entire KOS system.

This singleton model provides comprehensive control over logging behavior across the KOS UI SDK and connected applications. It manages dynamic log level overrides, responds to real-time configuration changes, and provides both REST API and WebSocket interfaces for log management. Essential for debugging, performance monitoring, and production troubleshooting.

Key Features

  • Runtime Log Level Control - Dynamically adjust log levels without application restart
  • Hierarchical Logger Management - Apply overrides to parent loggers and all children
  • Real-time Configuration - WebSocket-based updates propagate instantly across clients
  • REST API Integration - Query and manage logger configurations via HTTP endpoints
  • Override Persistence - Log overrides are maintained across sessions and page refreshes
  • Multi-Node Support - Coordinate logging across different KOS device nodes

Topic-Based Reactivity

The model listens to these KOS topics for real-time log management:

  • /kos/logs/override/add/* - Fired when new log level overrides are created
  • /kos/logs/override/remove/* - Fired when log level overrides are removed

Both topics support wildcard capture for node type targeting, enabling precise control over which device nodes receive logging configuration changes.

Architecture Integration

The log manager integrates with the broader KOS logging ecosystem:

  • KosLog System - Manages underlying logger instances and level settings
  • LogStreamModel - Streams managed by this model's log level policies
  • LogBlockModel - Individual log entries governed by level settings
  • REST Endpoints - Provides /api/kos/ui/loggers for external access

Common Use Cases

  • Development Debugging - Increase log verbosity for specific components during development
  • Production Troubleshooting - Temporarily enable debug logging to diagnose issues
  • Performance Monitoring - Adjust log levels to reduce overhead in production
  • System Administration - Centrally manage logging across distributed KOS deployments
  • Dynamic Configuration - Change logging behavior without service interruption
  • Selective Logging - Enable detailed logging for specific modules while keeping others quiet

Example: Basic Usage

const logManager = KosLogManager.instance('log-control').build();

// Get all current logger configurations via REST API
const loggers = await logManager.getAllLoggers();
console.log(`Managing ${loggers.length} loggers`);

Use Declared Type

See

interface KosLogManagerModel {
    getAllLoggers(_req?, res?): Promise<LogLevelDescriptor[]>;
    handleOverrideAdded(override, payload): void;
    handleOverrideRemoved(override): void;
}

Methods

  • REST API endpoint to retrieve all logger configurations.

    Parameters

    • Optional _req: KosRequest

      The incoming request (unused)

    • Optional res: KosResponse

      The response object to send logger data

    Returns Promise<LogLevelDescriptor[]>

    Array of log level descriptors for all loggers

    Get

    /api/kos/ui/loggers

  • WebSocket handler for log override addition events. Listens to: /kos/logs/override/add/*

    Parameters

    Returns void

  • WebSocket handler for log override removal events. Listens to: /kos/logs/override/remove/*

    Parameters

    Returns void