Logger System
0.1.3
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
44
class
LOGGER_SYSTEM_API
file_writer
:
public
log_writer_interface
,
public
sync_writer_tag
{
45
public
:
52
explicit
file_writer
(
const
std::string& filename,
53
bool
append =
true
,
54
std::unique_ptr<log_formatter_interface> formatter =
nullptr
);
55
59
~file_writer
()
override
;
60
61
// Non-copyable and non-movable
62
file_writer
(
const
file_writer
&) =
delete
;
63
file_writer
&
operator=
(
const
file_writer
&) =
delete
;
64
file_writer
(
file_writer
&&) =
delete
;
65
file_writer
&
operator=
(
file_writer
&&) =
delete
;
66
72
common::VoidResult
write(
const
log_entry
& entry)
override
;
73
78
common::VoidResult
flush()
override
;
79
84
common::VoidResult
close()
override
;
85
89
std::string
get_name
()
const override
{
return
"file"
; }
90
94
[[nodiscard]]
bool
is_open
()
const override
{
return
is_open_; }
95
99
bool
is_healthy()
const override
;
100
104
size_t
get_file_size
()
const
{
return
bytes_written_.load(); }
105
106
protected
:
110
std::string format_entry(
const
log_entry
& entry)
const
;
111
115
common::VoidResult
open_internal();
116
120
void
close_internal();
121
126
std::mutex&
get_mutex
()
const
{
return
mutex_; }
127
128
protected
:
129
std::string
filename_
;
130
bool
append_mode_
;
131
132
std::ofstream
file_stream_
;
133
std::atomic<bool> is_open_{
false
};
134
std::atomic<size_t> bytes_written_{0};
135
136
std::unique_ptr<log_formatter_interface>
formatter_
;
137
mutable
std::mutex
mutex_
;
138
};
139
140
}
// 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:44
kcenon::logger::file_writer::get_name
std::string get_name() const override
Get writer name.
Definition
file_writer.h:89
kcenon::logger::file_writer::formatter_
std::unique_ptr< log_formatter_interface > formatter_
Definition
file_writer.h:136
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:94
kcenon::logger::file_writer::filename_
std::string filename_
Definition
file_writer.h:129
kcenon::logger::file_writer::get_file_size
size_t get_file_size() const
Get current file size.
Definition
file_writer.h:104
kcenon::logger::file_writer::file_stream_
std::ofstream file_stream_
Definition
file_writer.h:132
kcenon::logger::file_writer::append_mode_
bool append_mode_
Definition
file_writer.h:130
kcenon::logger::file_writer::mutex_
std::mutex mutex_
Definition
file_writer.h:137
kcenon::logger::file_writer::get_mutex
std::mutex & get_mutex() const
Access the writer mutex for extended operations.
Definition
file_writer.h:126
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