Logger System
0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
rotating_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 "
file_writer.h
"
15
#include "
../interfaces/writer_category.h
"
16
17
#include <
kcenon/logger/logger_export.h
>
18
19
#include <chrono>
20
#include <vector>
21
#include <sstream>
22
23
namespace
kcenon::logger
{
24
29
enum class
rotation_type
{
30
size
,
31
daily
,
32
hourly
,
33
size_and_time
34
};
35
60
class
LOGGER_SYSTEM_API
rotating_file_writer
:
public
file_writer
{
61
public
:
69
rotating_file_writer
(
const
std::string& filename,
70
size_t
max_size,
71
size_t
max_files,
72
size_t
check_interval = 100);
73
81
rotating_file_writer
(
const
std::string& filename,
82
rotation_type
type,
83
size_t
max_files,
84
size_t
check_interval = 100);
85
95
rotating_file_writer
(
const
std::string& filename,
96
rotation_type
type,
97
size_t
max_size,
98
size_t
max_files,
99
size_t
check_interval = 100);
100
104
std::string
get_name
()
const override
{
return
"rotating_file"
; }
105
109
void
rotate();
110
111
public
:
119
common::VoidResult
write(
const
log_entry
& entry)
override
;
120
121
private
:
125
bool
should_rotate()
const
;
126
131
void
perform_rotation();
132
137
std::string generate_rotated_filename(
int
index = -1)
const
;
138
142
void
cleanup_old_files();
143
147
std::vector<std::string> get_backup_files()
const
;
148
152
bool
should_rotate_by_time()
const
;
153
157
std::size_t get_file_size()
const
;
158
159
private
:
160
rotation_type
rotation_type_
;
161
size_t
max_size_
;
162
size_t
max_files_
;
163
size_t
check_interval_
;
164
size_t
writes_since_check_{0};
165
std::string
base_filename_
;
166
std::string
file_extension_
;
167
std::chrono::system_clock::time_point
last_rotation_time_
;
168
std::chrono::system_clock::time_point
current_period_start_
;
169
};
170
171
}
// 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::rotating_file_writer
File writer with automatic log rotation support.
Definition
rotating_file_writer.h:60
kcenon::logger::rotating_file_writer::current_period_start_
std::chrono::system_clock::time_point current_period_start_
Definition
rotating_file_writer.h:168
kcenon::logger::rotating_file_writer::rotation_type_
rotation_type rotation_type_
Definition
rotating_file_writer.h:160
kcenon::logger::rotating_file_writer::last_rotation_time_
std::chrono::system_clock::time_point last_rotation_time_
Definition
rotating_file_writer.h:167
kcenon::logger::rotating_file_writer::max_size_
size_t max_size_
Definition
rotating_file_writer.h:161
kcenon::logger::rotating_file_writer::check_interval_
size_t check_interval_
Number of writes between rotation checks.
Definition
rotating_file_writer.h:163
kcenon::logger::rotating_file_writer::base_filename_
std::string base_filename_
Definition
rotating_file_writer.h:165
kcenon::logger::rotating_file_writer::file_extension_
std::string file_extension_
Definition
rotating_file_writer.h:166
kcenon::logger::rotating_file_writer::get_name
std::string get_name() const override
Get writer name.
Definition
rotating_file_writer.h:104
kcenon::logger::rotating_file_writer::max_files_
size_t max_files_
Definition
rotating_file_writer.h:162
file_writer.h
File writer for logging to files with optional buffering.
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::rotation_type
rotation_type
Determines when log rotation should occur.
Definition
rotating_file_writer.h:29
kcenon::logger::rotation_type::hourly
@ hourly
Rotate every hour.
kcenon::logger::rotation_type::size_and_time
@ size_and_time
Rotate based on both size and time.
kcenon::logger::rotation_type::daily
@ daily
Rotate daily at midnight.
kcenon::logger::rotation_type::size
@ size
Rotate based on file size only.
kcenon::logger::log_entry
Represents a single log entry with all associated metadata.
Definition
log_entry.h:155
writer_category.h
Writer category interfaces and type traits kcenon.
include
kcenon
logger
writers
rotating_file_writer.h
Generated by
1.12.0