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
14
#include "
../interfaces/log_writer_interface.h
"
15
#include "
../interfaces/log_formatter_interface.h
"
16
#include "
../interfaces/writer_category.h
"
17
18
#include <
kcenon/logger/logger_export.h
>
19
20
#include <atomic>
21
#include <mutex>
22
#include <memory>
23
24
namespace
kcenon::logger
{
25
46
class
LOGGER_SYSTEM_API
console_writer
:
public
log_writer_interface
,
public
sync_writer_tag
{
47
public
:
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
64
console_writer
(
const
console_writer
&) =
delete
;
65
console_writer
&
operator=
(
const
console_writer
&) =
delete
;
66
console_writer
(
console_writer
&&) =
delete
;
67
console_writer
&
operator=
(
console_writer
&&) =
delete
;
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
110
protected
:
114
std::string format_entry(
const
log_entry
& entry)
const
;
115
120
std::mutex&
get_mutex
()
const
{
return
mutex_; }
121
122
private
:
127
bool
is_color_supported()
const
;
128
129
private
:
130
bool
use_stderr_
;
131
bool
use_color_{
true
};
132
std::unique_ptr<log_formatter_interface>
formatter_
;
133
mutable
std::mutex
mutex_
;
134
};
135
136
}
// namespace kcenon::logger
kcenon::common::VoidResult
Definition
error_codes.h:116
kcenon::logger::console_writer
Core console writer for logging to stdout/stderr.
Definition
console_writer.h:46
kcenon::logger::console_writer::operator=
console_writer & operator=(const console_writer &)=delete
kcenon::logger::console_writer::operator=
console_writer & operator=(console_writer &&)=delete
kcenon::logger::console_writer::use_stderr_
bool use_stderr_
Definition
console_writer.h:130
kcenon::logger::console_writer::formatter_
std::unique_ptr< log_formatter_interface > formatter_
Definition
console_writer.h:132
kcenon::logger::console_writer::get_mutex
std::mutex & get_mutex() const
Access the writer mutex for extended operations.
Definition
console_writer.h:120
kcenon::logger::console_writer::console_writer
console_writer(const console_writer &)=delete
kcenon::logger::console_writer::mutex_
std::mutex mutex_
Definition
console_writer.h:133
kcenon::logger::console_writer::get_name
std::string get_name() const override
Get writer name.
Definition
console_writer.h:85
kcenon::logger::console_writer::console_writer
console_writer(console_writer &&)=delete
kcenon::logger::log_writer_interface
Base interface for all log writers and decorators.
Definition
log_writer_interface.h:50
log_formatter_interface.h
Interface for log message formatters (Strategy Pattern) kcenon.
log_writer_interface.h
Base interface for all log writers and decorators.
logger_export.h
DLL export/import macros for logger_system shared library support.
LOGGER_SYSTEM_API
#define LOGGER_SYSTEM_API
Definition
logger_export.h:29
kcenon::logger
Definition
common_logger_adapter.h:29
kcenon::logger::log_entry
Represents a single log entry with all associated metadata.
Definition
log_entry.h:155
kcenon::logger::sync_writer_tag
Tag interface for synchronous writers.
Definition
writer_category.h:78
writer_category.h
Writer category interfaces and type traits kcenon.
include
kcenon
logger
writers
console_writer.h
Generated by
1.12.0