mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-26 09:52:31 +00:00
📝 document config constructors
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
---
|
||||
name: queue-config-new
|
||||
group: api
|
||||
category: config
|
||||
update-time: 20260613
|
||||
description: Construct a QueueConfig value for config-driven synchronous queue wrapping.
|
||||
key-word:
|
||||
- queue
|
||||
- config
|
||||
- constructor
|
||||
- public
|
||||
---
|
||||
|
||||
## Queue-config-new
|
||||
|
||||
Construct a `QueueConfig` value for config-driven synchronous queue wrapping. This constructor stores queue capacity and overflow behavior as data for later logger assembly.
|
||||
|
||||
### Interface
|
||||
|
||||
```moonbit
|
||||
pub fn QueueConfig::new(
|
||||
max_pending : Int,
|
||||
overflow~ : QueueOverflowPolicy = QueueOverflowPolicy::DropNewest,
|
||||
) -> QueueConfig {
|
||||
```
|
||||
|
||||
#### input
|
||||
|
||||
- `max_pending : Int` - Queue capacity used by the configured queue wrapper.
|
||||
- `overflow : QueueOverflowPolicy` - Overflow strategy used when the queue is full.
|
||||
|
||||
#### output
|
||||
|
||||
- `QueueConfig` - Queue configuration value suitable for `LoggerConfig` or JSON serialization helpers.
|
||||
|
||||
### Explanation
|
||||
|
||||
Detailed rules explaining key parameters and behaviors
|
||||
|
||||
- The constructor stores `max_pending` and `overflow` directly without additional normalization.
|
||||
- This config is used by `build_logger(...)` and `parse_and_build_logger(...)` when `queue` is present in `LoggerConfig`.
|
||||
- It configures the synchronous `QueuedSink`, not the async adapter package.
|
||||
- `overflow` defaults to `QueueOverflowPolicy::DropNewest`.
|
||||
|
||||
### How to Use
|
||||
|
||||
Here are some specific examples provided.
|
||||
|
||||
#### When Need Config-driven Bounded Queueing
|
||||
|
||||
When runtime queue wrapping should be described as config data:
|
||||
```moonbit
|
||||
let queue = QueueConfig::new(32, overflow=QueueOverflowPolicy::DropOldest)
|
||||
```
|
||||
|
||||
In this example, queue capacity and overflow behavior are captured for later runtime assembly.
|
||||
|
||||
#### When Embed Queue Config In Logger Config
|
||||
|
||||
When queueing should be part of a larger logger configuration object:
|
||||
```moonbit
|
||||
let config = LoggerConfig::new(queue=Some(QueueConfig::new(16)))
|
||||
```
|
||||
|
||||
In this example, queue config becomes one component of the top-level logger config.
|
||||
|
||||
### Error Case
|
||||
|
||||
e.g.:
|
||||
- If `max_pending` is too small, configured runtime drops may happen frequently under bursty load.
|
||||
|
||||
- If queue config is omitted from `LoggerConfig`, no synchronous queue wrapper is added.
|
||||
|
||||
### Notes
|
||||
|
||||
1. This constructor is for config-driven queue wrapping, not `bitlogger_async`.
|
||||
|
||||
2. Use `Logger::with_queue(...)` when queue composition should be done directly in code.
|
||||
Reference in New Issue
Block a user