Update .gitignore, CMakeLists.txt, CMakePresets.json, and 10 more files
This commit is contained in:
1 parent
88ff181bfd
commit
1f58c33bb7
13 files changed
+3380
No files matched your search
@@ -0,0 +1,91 @@
|
||||
# SPDLOGConfig
|
||||
|
||||
Eigenständiges, header-only CMake-Projekt zur Konfiguration von [spdlog](https://github.com/gabime/spdlog)
|
||||
aus einer JSON-Datei. Es ist die aus [RelixTransferAI](../README.md) extrahierte Logging-Konfiguration
|
||||
(Namespace `spdlogconfig`) und wird dort sowie in anderen Projekten
|
||||
über [CPM.cmake](https://github.com/cpm-cmake/CPM.cmake) eingebunden.
|
||||
|
||||
## Features
|
||||
|
||||
- Komplette Logger-Definition über eine JSON-Datei: globale und logger-spezifische Patterns,
|
||||
Level, Sinks, async Logger (globaler und lokaler Thread-Pool, Overflow-Policies).
|
||||
- Sinks: `console_st/mt`, `color_console_st/mt`, `basic_file_st/mt`, `daily_file_st/mt`,
|
||||
`rotating_file_st/mt`, `null_sink_st/mt`, `syslog_st/mt` (POSIX), `msvc_sink_st/mt` (Windows),
|
||||
optional `kafka_*`/`mongo_*` falls `librdkafka`/`mongocxx` im Include-Pfad liegen.
|
||||
- Reload-Unterstützung: Level zur Laufzeit ändern, ohne Neustart (`setupFromReload()`).
|
||||
- `LevelManager` als Singleton zur Laufzeit-Verwaltung einzelner Logger-Level.
|
||||
- Installierbare CMake-Package (`find_package(SPDLOGConfig)`), CPM- und FetchContent-tauglich.
|
||||
|
||||
## Verwendung
|
||||
|
||||
### Einbindung über CPM
|
||||
|
||||
```cmake
|
||||
include(cmake/CPM.cmake)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME SPDLOGConfig
|
||||
GITHUB_REPOSITORY <user>/SPDLOGConfig
|
||||
GIT_TAG v1.0.0
|
||||
)
|
||||
|
||||
target_link_libraries(myTarget PRIVATE SPDLOGConfig::SPDLOGConfig)
|
||||
```
|
||||
|
||||
Lokal entwickeltes Checkout statt GitHub-Release (Source-Override vor dem `CPMAddPackage`-Aufruf):
|
||||
|
||||
```cmake
|
||||
set(CPM_SPDLOGConfig_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/../spdlogConfig")
|
||||
```
|
||||
|
||||
### Verwendung im Code
|
||||
|
||||
```cpp
|
||||
#include <spdlogconfig/SPDLOGConfig.h>
|
||||
|
||||
int main() {
|
||||
spdlogconfig::setupFrom("config/logging.json");
|
||||
// spdlogconfig::setupFromReload(); // später: Konfiguration neu einlesen
|
||||
|
||||
auto logger = spdlog::get("root");
|
||||
logger->info("hello from SPDLOGConfig");
|
||||
|
||||
// Laufzeit-Level-Verwaltung:
|
||||
spdlogconfig::LevelManager::instance().setLoggerLevel("root", "debug");
|
||||
}
|
||||
```
|
||||
|
||||
Fehler beim Öffnen/Parsen der Konfiguration werden von `setupFrom()` aktuell
|
||||
**intern behandelt** (Ausgabe auf stdout/stderr, keine Propagation) — das ist
|
||||
Legacy-Verhalten aus der ursprünglichen RelixTransfer-Headerdatei. Der Typ
|
||||
`spdlogconfig::spdlogconfig_error` existiert trotzdem und wird intern für
|
||||
teilweise Fehlerkontexte verwendet; auf Propagation sollte sich in neuen
|
||||
Programmen nicht verlassen werden.
|
||||
|
||||
## Konfigurationsformat
|
||||
|
||||
Ein vollständiges Beispiel liegt unter [`test/full.json`](test/full.json). Das Schema
|
||||
(`spdlog_conf_t`) wird mit [reflect-cpp](https://github.com/getml/reflect-cpp) deserialisiert;
|
||||
unbekannte Felder, fehlende optionale Felder und Default-Werte werden vom Framework behandelt.
|
||||
|
||||
## Abhängigkeiten
|
||||
|
||||
| Paket | Version | Zweck |
|
||||
|----------------|---------|------------------------------|
|
||||
| spdlog | 1.17.0 | Logging (std::format-Modus) |
|
||||
| reflect-cpp | 0.24.0 | JSON-Deserialisierung |
|
||||
| doctest | 2.5.2 | Tests (nur test/) |
|
||||
|
||||
## Bauen und Testen
|
||||
|
||||
Voraussetzung: CMake ≥ 3.21, Clang 20/21 (oder MSVC/MSYS2-Clang), Ninja oder Make.
|
||||
|
||||
```sh
|
||||
cmake --preset linux-clang-21-release
|
||||
cmake --build --preset linux-clang-21-release
|
||||
ctest --preset linux-clang-21-release
|
||||
```
|
||||
|
||||
## Lizenz
|
||||
|
||||
Public Domain (Unlicense) — siehe [LICENSE](LICENSE).
|
||||
Reference in new issue
Block a user