Logger System
1.0.0
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
file_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 <fstream>
21
#include <atomic>
22
#include <memory>
23
#include <mutex>
24
25
namespace
kcenon::logger
{
26
27
namespace
security {
class
integrity_policy; }
28
46
class
LOGGER_SYSTEM_API
file_writer
:
public
log_writer_interface
,
public
sync_writer_tag
{
47
public
:
58
explicit
file_writer
(
const
std::string& filename,
59
bool
append =
true
,
60
std::unique_ptr<log_formatter_interface> formatter =
nullptr
,
61
bool
binary =
false
);
62
66
~file_writer
()
override
;
67
68
// Non-copyable and non-movable
69
file_writer
(
const
file_writer
&) =
delete
;
70
file_writer
&
operator=
(
const
file_writer
&) =
delete
;
71
file_writer
(
file_writer
&&) =
delete
;
72
file_writer
&
operator=
(
file_writer
&&) =
delete
;
73
79
common::VoidResult
write(
const
log_entry
& entry)
override
;
80
85
common::VoidResult
flush()
override
;
86
91
common::VoidResult
close()
override
;
92
96
std::string
get_name
()
const override
{
return
"file"
; }
97
101
[[nodiscard]]
bool
is_open
()
const override
{
return
is_open_; }
102
106
bool
is_healthy()
const override
;
107
111
size_t
get_file_size
()
const
{
return
bytes_written_.load(); }
112
126
void
set_integrity_policy(std::shared_ptr<security::integrity_policy> policy);
127
128
protected
:
132
std::string format_entry(
const
log_entry
& entry)
const
;
133
137
common::VoidResult
open_internal();
138
142
void
close_internal();
143
148
std::mutex&
get_mutex
()
const
{
return
mutex_; }
149
150
protected
:
151
std::string
filename_
;
152
bool
append_mode_
;
153
bool
binary_mode_ =
false
;
154
155
std::ofstream
file_stream_
;
156
std::atomic<bool> is_open_{
false
};
157
std::atomic<size_t> bytes_written_{0};
158
159
std::unique_ptr<log_formatter_interface>
formatter_
;
161
std::shared_ptr<security::integrity_policy>
integrity_policy_
;
162
mutable
std::mutex
mutex_
;
163
};
164
165
}
// namespace kcenon::logger
kcenon::common::VoidResult
Definition
error_codes.h:116
kcenon::logger::file_writer
Core file writer for logging to files.
Definition
file_writer.h:46
kcenon::logger::file_writer::get_name
std::string get_name() const override
Get writer name.
Definition
file_writer.h:96
kcenon::logger::file_writer::integrity_policy_
std::shared_ptr< security::integrity_policy > integrity_policy_
Integrity policy shared with derived writers (e.g. rotating_file_writer).
Definition
file_writer.h:161
kcenon::logger::file_writer::formatter_
std::unique_ptr< log_formatter_interface > formatter_
Definition
file_writer.h:159
kcenon::logger::file_writer::operator=
file_writer & operator=(const file_writer &)=delete
kcenon::logger::file_writer::operator=
file_writer & operator=(file_writer &&)=delete
kcenon::logger::file_writer::is_open
bool is_open() const override
Check if file is open.
Definition
file_writer.h:101
kcenon::logger::file_writer::filename_
std::string filename_
Definition
file_writer.h:151
kcenon::logger::file_writer::get_file_size
size_t get_file_size() const
Get current file size.
Definition
file_writer.h:111
kcenon::logger::file_writer::file_stream_
std::ofstream file_stream_
Definition
file_writer.h:155
kcenon::logger::file_writer::append_mode_
bool append_mode_
Definition
file_writer.h:152
kcenon::logger::file_writer::mutex_
std::mutex mutex_
Definition
file_writer.h:162
kcenon::logger::file_writer::get_mutex
std::mutex & get_mutex() const
Access the writer mutex for extended operations.
Definition
file_writer.h:148
kcenon::logger::file_writer::file_writer
file_writer(const file_writer &)=delete
kcenon::logger::file_writer::file_writer
file_writer(file_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
file_writer.h
Generated by
1.12.0