LeviLamina
Loading...
Searching...
No Matches
RotatePolicy.h
1#pragma once
2
3#include <chrono>
4#include <filesystem>
5#include <functional>
6#include <string>
7
8#include "ll/api/base/Macro.h"
9#include "ll/api/base/StdInt.h"
10#include "ll/api/data/TmWithMs.h"
11
12namespace ll::io {
13
15enum class RotateInterval : int {
16 None,
17 Hourly,
18 Daily,
19};
20
26 size_t index;
27 RotateInterval interval;
28};
29
36 bool rotateOnOpen = true;
37
42 uint64 maxFileSize = 32ull * 1024 * 1024;
43
46 RotateInterval interval = RotateInterval::Daily;
47
49 bool compress = true;
50
53 size_t keepUncompressed = 7;
54
56 bool cleanup = true;
57
59 size_t maxFiles = 1024;
60
62 int maxAgeDays = 120;
63
67 uint64 totalSizeCap = 512ull * 1024 * 1024;
68};
69
73class RotatePolicy : public RotateConfig {
74public:
75 RotatePolicy() = default;
76 RotatePolicy(RotateConfig const& config) : RotateConfig(config) {}
77
80 LLNDAPI static std::string defaultNamer(ArchiveNameInfo const& info);
81
86 std::function<std::string(ArchiveNameInfo const&)> namer{&defaultNamer};
87
89 LLNDAPI static RotatePolicy disabled();
90};
91
92} // namespace ll::io
static LLNDAPI RotatePolicy disabled()
A policy that never rotates.
std::function< std::string(ArchiveNameInfo const &)> namer
Definition RotatePolicy.h:86
static LLNDAPI std::string defaultNamer(ArchiveNameInfo const &info)
Definition TmWithMs.h:11
Definition RotatePolicy.h:24
size_t index
Rotations already made within the current interval.
Definition RotatePolicy.h:26
RotateInterval interval
The policy's interval, which decides the timestamp's precision.
Definition RotatePolicy.h:27
data::TmWithMs time
The time the rotation was triggered at.
Definition RotatePolicy.h:25
Definition RotatePolicy.h:33
size_t maxFiles
Keeps at most this many archives, counting compressed and plain alike. 0 disables the limit.
Definition RotatePolicy.h:59
bool rotateOnOpen
Definition RotatePolicy.h:36
size_t keepUncompressed
Definition RotatePolicy.h:53
uint64 maxFileSize
Definition RotatePolicy.h:42
bool compress
Compresses archives to gzip on a background thread. The active file is never compressed.
Definition RotatePolicy.h:49
bool cleanup
Deletes archives that fall outside the limits below. When false, nothing is ever removed.
Definition RotatePolicy.h:56
RotateInterval interval
Definition RotatePolicy.h:46
uint64 totalSizeCap
Definition RotatePolicy.h:67
int maxAgeDays
Removes archives last modified more than this many days ago. 0 disables the limit.
Definition RotatePolicy.h:62