Signal-Controlled Logger Library

A thread-safe, POSIX-compliant logging system with real-time signal control

Key Features

Signal Control

Three real-time signals for dynamic control:

  • State dump trigger
  • Logging enable/disable toggle
  • Log level adjustment

Logging Levels

Three configurable detail levels:

  • MIN: Critical messages only
  • STANDARD: Regular operational logs
  • MAX: Detailed debugging information

Thread Safety

Features ensuring thread-safe operation:

  • Atomic operations for state management
  • Mutex protection for file operations
  • Signal-safe handler implementation

Architecture Overview

graph TD A[Application] --> B[Logger Library] B --> C[Signal Handlers] B --> D[Log File Management] B --> E[State Management] C --> F[Dump Signal] C --> G[Toggle Signal] C --> H[Level Signal] D --> I[Thread-Safe Logging] E --> J[Atomic State] E --> K[Configuration]

Function Call Flow

sequenceDiagram participant App as Application participant Log as Logger participant Sig as Signal Handlers participant File as File System App->>Log: logger_init() Log->>File: Open log file App->>Log: logger_setup_signals() Log->>Sig: Register handlers App->>Log: logger_log() Log->>Log: Check level & enabled Log->>File: Write message Note over App,File: Asynchronous Signals Sig->>Log: handle_dump_signal() Sig->>Log: handle_toggle_signal() Sig->>Log: handle_level_signal()

Memory & Performance Optimizations

Code Structure

classDiagram class LoggerState { +atomic_bool is_logging_enabled +atomic_uint log_level +FILE* log_file +const char* dump_file_prefix +pthread_mutex_t file_mutex +atomic_uint_least64_t dump_counter } class LoggerConfig { +const char* log_file_path +const char* dump_file_prefix +void (*dump_state_callback)() } class SignalHandlers { +handle_dump_signal() +handle_toggle_signal() +handle_level_signal() } LoggerState --> LoggerConfig LoggerState --> SignalHandlers