mirror of
https://github.com/telemt/telemt.git
synced 2026-06-25 04:11:10 +03:00
Add bounded file logging rotation and retention #832
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
This commit is contained in:
@@ -14,6 +14,7 @@ This document lists all configuration keys accepted by `config.toml`.
|
||||
|
||||
# Table of contents
|
||||
- [Top-level keys](#top-level-keys)
|
||||
- [logging](#logging)
|
||||
- [general](#general)
|
||||
- [general.modes](#generalmodes)
|
||||
- [general.links](#generallinks)
|
||||
@@ -35,6 +36,7 @@ This document lists all configuration keys accepted by `config.toml`.
|
||||
| --- | ---- | ------- | ---------- |
|
||||
| [`include`](#include) | `String` (special directive) | — | `✔` |
|
||||
| [`show_link`](#show_link) | `"*"` or `String[]` | `[]` (`ShowLink::None`) | `✘` |
|
||||
| [`logging`](#logging) | Table | default values | `✘` |
|
||||
| [`dc_overrides`](#dc_overrides) | `Map<String, String or String[]>` | `{}` | `✘` |
|
||||
| [`default_dc`](#default_dc) | `u8` | — (effective fallback: `2` in ME routing) | `✘` |
|
||||
| [`beobachten`](#beobachten) | `bool` | `true` | `✘` |
|
||||
@@ -83,6 +85,84 @@ This document lists all configuration keys accepted by `config.toml`.
|
||||
default_dc = 2
|
||||
```
|
||||
|
||||
# [logging]
|
||||
|
||||
| Key | Type | Default | Hot-Reload |
|
||||
| --- | ---- | ------- | ---------- |
|
||||
| [`destination`](#loggingdestination) | `"stderr"` / `"syslog"` / `"file"` | `"stderr"` | `✘` |
|
||||
| [`path`](#loggingpath) | `String` | — | `✘` |
|
||||
| [`rotation`](#loggingrotation) | `"never"` / `"minutely"` / `"hourly"` / `"daily"` / `"weekly"` | `"never"` | `✘` |
|
||||
| [`max_size_bytes`](#loggingmax_size_bytes) | `u64` | `0` | `✘` |
|
||||
| [`max_files`](#loggingmax_files) | `usize` | `0` | `✘` |
|
||||
| [`max_age_secs`](#loggingmax_age_secs) | `u64` | `0` | `✘` |
|
||||
|
||||
## logging.destination
|
||||
- **Constraints / validation**: Must be `stderr`, `syslog`, or `file`. `syslog` is supported only on Unix platforms. `file` requires `logging.path`.
|
||||
- **Description**: Selects the runtime log destination. CLI flags override this value.
|
||||
- **Example**:
|
||||
|
||||
```toml
|
||||
[logging]
|
||||
destination = "file"
|
||||
path = "/var/log/telemt.log"
|
||||
```
|
||||
## logging.path
|
||||
- **Constraints / validation**: Required when `logging.destination = "file"`; must not be empty.
|
||||
- **Description**: File path used for file logging. With time rotation, the file name is used as the rolling prefix.
|
||||
- **Example**:
|
||||
|
||||
```toml
|
||||
[logging]
|
||||
destination = "file"
|
||||
path = "/var/log/telemt.log"
|
||||
```
|
||||
## logging.rotation
|
||||
- **Constraints / validation**: Must be `never`, `minutely`, `hourly`, `daily`, or `weekly`.
|
||||
- **Description**: Time-based file rotation interval. `weekly` rotates at the Sunday UTC boundary. `never` writes to the exact `logging.path` unless size rotation is enabled.
|
||||
- **Example**:
|
||||
|
||||
```toml
|
||||
[logging]
|
||||
destination = "file"
|
||||
path = "/var/log/telemt.log"
|
||||
rotation = "daily"
|
||||
```
|
||||
## logging.max_size_bytes
|
||||
- **Constraints / validation**: `0` disables size rotation.
|
||||
- **Description**: Rotates file logs before writing the next record when the active file is non-empty and that record would exceed this byte limit. Records are written whole and are not split.
|
||||
- **Example**:
|
||||
|
||||
```toml
|
||||
[logging]
|
||||
destination = "file"
|
||||
path = "/var/log/telemt.log"
|
||||
max_size_bytes = 104857600
|
||||
```
|
||||
## logging.max_files
|
||||
- **Constraints / validation**: `0` disables count-based retention.
|
||||
- **Description**: Keeps at most this many matching file logs, counting the active file and rotated archives. The active file is never deleted by retention cleanup.
|
||||
- **Example**:
|
||||
|
||||
```toml
|
||||
[logging]
|
||||
destination = "file"
|
||||
path = "/var/log/telemt.log"
|
||||
rotation = "daily"
|
||||
max_files = 14
|
||||
```
|
||||
## logging.max_age_secs
|
||||
- **Constraints / validation**: `0` disables age-based retention.
|
||||
- **Description**: Removes rotated file logs older than this many seconds based on file modification time. The active file is never deleted by retention cleanup.
|
||||
- **Example**:
|
||||
|
||||
```toml
|
||||
[logging]
|
||||
destination = "file"
|
||||
path = "/var/log/telemt.log"
|
||||
rotation = "daily"
|
||||
max_age_secs = 1209600
|
||||
```
|
||||
|
||||
# [general]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user