149 bool is_healthy()
const override;
155 std::string get_name()
const override;
161 void set_use_color(
bool use_color)
override;
167 void set_force_flush_on_critical(
bool enable);
179 std::atomic<uint64_t> total_critical_writes{0};
180 std::atomic<uint64_t> total_flushes{0};
181 std::atomic<uint64_t> wal_writes{0};
182 std::atomic<uint64_t> sync_calls{0};
193 bool is_critical_level(common::interfaces::log_level level)
const;
199 void write_to_wal(
const log_entry& entry);
204 void sync_file_descriptor();
223 std::atomic<bool> shutting_down_{
false};
252 std::size_t async_queue_size = 10000
267 std::string
get_name()
const override;
Abstract base class for all log output writers kcenon.
Abstract base class for all log output writers.
bool use_color() const
Get current color output setting.
Synchronous wrapper ensuring critical logs are never lost.
std::mutex critical_mutex_
Mutex for critical section.
critical_writer_config config_
Configuration.
critical_stats stats_
Statistics.
const critical_stats & get_stats() const
const critical_writer_config & get_config() const
Get current configuration.
std::unique_ptr< std::ofstream > wal_stream_
Write-ahead log stream.
log_writer_ptr wrapped_writer_
Wrapped writer.
Combines async writer for normal logs with critical_writer for safety.
log_writer_ptr critical_writer_
std::size_t async_queue_size_
std::string get_name() const override
~hybrid_writer() override
hybrid_writer(log_writer_ptr wrapped_writer, critical_writer_config critical_config={}, std::size_t async_queue_size=10000)
bool is_healthy() const override
Check if the writer is healthy and operational.
common::VoidResult write(const log_entry &entry) override
Write a log entry.
common::VoidResult flush() override
Flush any buffered data.
void set_use_color(bool use_color) override
Set whether to use color output (if supported)
DLL export/import macros for logger_system shared library support.
#define LOGGER_SYSTEM_API
std::unique_ptr< log_writer_interface > log_writer_ptr
Type alias for writer unique pointer.
Tag interface for composite writers.
Get statistics about critical writes.
Configuration for critical log writer.
bool force_flush_on_error
Force immediate flush for error messages (default: false)
bool force_flush_on_critical
Force immediate flush for critical/fatal messages (default: true)
std::string wal_path
Path for write-ahead log file (only if write_ahead_log is true)
bool sync_on_critical
Sync file descriptor after each critical write (default: true)
bool write_ahead_log
Enable write-ahead logging for maximum durability (default: false)
uint32_t critical_write_timeout_ms
Timeout for critical write operations in milliseconds (0 = no timeout)
Tag interface for decorator writers.
Represents a single log entry with all associated metadata.
Writer category interfaces and type traits kcenon.