Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
console_writer.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
12#pragma once
13
17
19
20#include <atomic>
21#include <mutex>
22#include <memory>
23
24namespace kcenon::logger {
25
47public:
54 explicit console_writer(bool use_stderr = false,
55 bool auto_detect_color = true,
56 std::unique_ptr<log_formatter_interface> formatter = nullptr);
57
61 ~console_writer() override;
62
63 // Non-copyable and non-movable
68
74 common::VoidResult write(const log_entry& entry) override;
75
80 common::VoidResult flush() override;
81
85 std::string get_name() const override { return "console"; }
86
90 bool is_healthy() const override;
91
96 void set_use_stderr(bool use_stderr);
97
102 void set_use_color(bool use_color);
103
108 bool use_color() const;
109
110protected:
114 std::string format_entry(const log_entry& entry) const;
115
120 std::mutex& get_mutex() const { return mutex_; }
121
122private:
127 bool is_color_supported() const;
128
129private:
131 bool use_color_{true};
132 std::unique_ptr<log_formatter_interface> formatter_;
133 mutable std::mutex mutex_;
134};
135
136} // namespace kcenon::logger
Core console writer for logging to stdout/stderr.
console_writer & operator=(const console_writer &)=delete
console_writer & operator=(console_writer &&)=delete
std::unique_ptr< log_formatter_interface > formatter_
std::mutex & get_mutex() const
Access the writer mutex for extended operations.
console_writer(const console_writer &)=delete
std::string get_name() const override
Get writer name.
console_writer(console_writer &&)=delete
Base interface for all log writers and decorators.
Interface for log message formatters (Strategy Pattern) kcenon.
Base interface for all log writers and decorators.
DLL export/import macros for logger_system shared library support.
#define LOGGER_SYSTEM_API
Represents a single log entry with all associated metadata.
Definition log_entry.h:155
Tag interface for synchronous writers.
Writer category interfaces and type traits kcenon.