You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+193-2
Original file line number
Diff line number
Diff line change
@@ -5,5 +5,196 @@ All Rights Reserved
5
5
SPDX-License-Identifier: Apache-2.0
6
6
)
7
7
8
-
# soralog
9
-
Fast&flex logger for Quadrivium
8
+
# Soralog: High-Performance Logging Library
9
+
10
+
## Overview
11
+
12
+
Soralog is a high-performance, flexible logging library designed for C++ applications. It provides robust logging features, supports multiple logging backends, and allows extensive customization. The library is designed to be lightweight, efficient, and easy to integrate into various projects.
13
+
14
+
## Features
15
+
16
+
- Multiple log sinks: console, file, syslog, and more.
17
+
- Efficient lock-free circular buffer for log messages.
18
+
- Thread-safe logging with minimal overhead.
19
+
- Hierarchical logging groups with inheritance.
20
+
- Configurable log levels and formats.
21
+
- Configurable via YAML or programmatically.
22
+
- Macro-based or object-based logging interface (up to user).
23
+
24
+
## Installation
25
+
26
+
### Dependencies
27
+
28
+
Soralog requires:
29
+
-`fmt` for formatting log messages.
30
+
-`yaml-cpp` for convenient configuring.
31
+
-`gtest` for unit tests (optional).
32
+
33
+
Soralog uses CMake as its build system and supports different configurations through CMake options.
34
+
35
+
### Build Options
36
+
37
+
-`BUILD_TESTS` (default: `OFF`) – Build unit tests.
38
+
-`EXAMPLES` (default: `OFF`) – Build example programs.
|`is_fallback`| bool | No |`false`| Marks this group as the default fallback |
164
+
|`children`| array | No |`[]`| List of child groups |
165
+
166
+
## Examples
167
+
168
+
## Examples
169
+
170
+
Soralog provides various examples demonstrating different use cases and configurations. Below is a list of available examples:
171
+
172
+
1.**01-hello_world** – A minimal example that initializes a logger and writes a simple message.
173
+
2.**02-manual** – Demonstrates programmatic configuration of logging without using a YAML config file.
174
+
3.**03-with_config_file** – Shows how to configure Soralog using a YAML configuration file.
175
+
4.**04-cascade_config** – Demonstrates hierarchical logging groups with inherited settings.
176
+
5.**05-two_sinks** – Example of logging to two different sinks (e.g., console and file).
177
+
6.**06-multisink** – Uses a multisink to send log messages to multiple destinations.
178
+
7.**07-multisink_with_different_level** – Extends the multisink example by setting different log levels for different sinks.
179
+
8.**99-most_features** – A comprehensive example showcasing most of Soralog’s features, including advanced configuration, multi-threading, and custom loggers.
180
+
181
+
### Example Source Code
182
+
183
+
The source code for these examples is available in the [example](https://github.com/xDimon/soralog/tree/main/example) directory.
184
+
185
+
## Projects Using Soralog
186
+
187
+
Soralog is utilized in several open-source projects, including:
0 commit comments