mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-24 00:42:18 +00:00
82 lines
2.8 KiB
Markdown
82 lines
2.8 KiB
Markdown
---
|
|
name: async-logger-build-config
|
|
group: api
|
|
category: async
|
|
update-time: 20260613
|
|
description: Create the combined sync-and-async build config used by async logger builder APIs.
|
|
key-word:
|
|
- async
|
|
- build
|
|
- config
|
|
- public
|
|
---
|
|
|
|
## Async-logger-build-config
|
|
|
|
Create an `AsyncLoggerBuildConfig` value that combines the base synchronous `LoggerConfig` with the async runtime `AsyncLoggerConfig`. This is the constructor used when async builder APIs should receive one typed object carrying both layers of setup.
|
|
|
|
### Interface
|
|
|
|
```moonbit
|
|
pub fn AsyncLoggerBuildConfig::new(
|
|
logger~ : @bitlogger.LoggerConfig = @bitlogger.default_logger_config(),
|
|
async_config~ : AsyncLoggerConfig = AsyncLoggerConfig::new(),
|
|
) -> AsyncLoggerBuildConfig {
|
|
```
|
|
|
|
#### input
|
|
|
|
- `logger : LoggerConfig` - Base synchronous logger config describing the sink, level, target, and related sync logger settings.
|
|
- `async_config : AsyncLoggerConfig` - Async runtime config describing queue, batching, linger, and flush behavior.
|
|
|
|
#### output
|
|
|
|
- `AsyncLoggerBuildConfig` - Combined build config used by async logger build and parse helpers.
|
|
|
|
### Explanation
|
|
|
|
Detailed rules explaining key parameters and behaviors
|
|
|
|
- Omitting `logger` uses `default_logger_config()`.
|
|
- Omitting `async_config` uses `AsyncLoggerConfig::new()`.
|
|
- The constructor simply packages both config objects into one public build shape.
|
|
- This helper is the main code-side counterpart to `parse_async_logger_build_config_text(...)`.
|
|
|
|
### How to Use
|
|
|
|
Here are some specific examples provided.
|
|
|
|
#### When Need One Typed Object For Async Builder Input
|
|
|
|
When sync sink setup and async runtime policy should travel together through build code:
|
|
```moonbit
|
|
let config = AsyncLoggerBuildConfig::new(
|
|
logger=@bitlogger.LoggerConfig::new(target="svc.async"),
|
|
async_config=AsyncLoggerConfig::new(max_pending=64, max_batch=8),
|
|
)
|
|
```
|
|
|
|
In this example, the builder input keeps both configuration layers in one typed value.
|
|
|
|
#### When Need Defaulted Async Build Settings
|
|
|
|
When code only wants the standard combined config shape with few overrides:
|
|
```moonbit
|
|
let config = AsyncLoggerBuildConfig::new(async_config=AsyncLoggerConfig::new(max_batch=4))
|
|
```
|
|
|
|
In this example, the base sync logger config falls back to its default value automatically.
|
|
|
|
### Error Case
|
|
|
|
e.g.:
|
|
- This constructor itself does not have a normal failure mode; it only packages configuration values.
|
|
|
|
- If callers only need async runtime policy and not the full builder input shape, `AsyncLoggerConfig::new(...)` is the smaller API.
|
|
|
|
### Notes
|
|
|
|
1. Use this helper when async builder APIs should receive one combined config object.
|
|
|
|
2. Pair it with `build_async_logger(...)`, `build_async_text_logger(...)`, or `parse_async_logger_build_config_text(...)` depending on whether the source is code or JSON text.
|