📝 document console sink types

This commit is contained in:
Nanaloveyuki
2026-06-13 21:40:40 +08:00
parent 6ab828c4ce
commit 0418fcab60
4 changed files with 222 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
---
name: console-sink-type
group: api
category: sink
update-time: 20260613
description: Public plain console sink type used for default text console output.
key-word:
- sink
- console
- type
- public
---
## Console-sink-type
`ConsoleSink` is the public plain console sink type used for default text console output. It is the minimal built-in synchronous sink and serves as the concrete sink type returned by `console_sink()`.
### Interface
```moonbit
pub struct ConsoleSink {
_dummy : Unit
}
```
#### output
- `ConsoleSink` - Public synchronous sink type that writes records to the console with default text formatting.
### Explanation
Detailed rules explaining key parameters and behaviors
- This is a public root struct, not a type alias.
- The current visible field is `_dummy : Unit`, which exists only to carry the concrete sink type.
- `console_sink()` constructs this type as the simplest built-in console output path.
- `Logger[ConsoleSink]`, `LibraryLogger[ConsoleSink]`, and default logger helpers all use this concrete sink type when no richer formatting or routing layer is introduced.
### How to Use
Here are some specific examples provided.
#### When Need A Typed Plain Console Sink Value
When code should keep the concrete sink type visible:
```moonbit
let sink : ConsoleSink = console_sink()
```
In this example, the sink value stays explicit and can be passed into typed logger construction.
#### When Need A Minimal Root Logger Type
When logging should start from the simplest built-in console sink:
```moonbit
let logger : Logger[ConsoleSink] = Logger::new(console_sink(), target="app")
```
In this example, the concrete console sink type remains part of the logger type.
### Error Case
e.g.:
- `ConsoleSink` itself does not have a runtime failure mode.
- Console output still depends on the current runtime environment even though the sink type is always constructible.
### Notes
1. Use `console_sink()` when you need a value of this type.
2. Use `JsonConsoleSink` or `FormattedConsoleSink` when output shape should be more explicit than the default text path.
+75
View File
@@ -0,0 +1,75 @@
---
name: formatted-console-sink-type
group: api
category: sink
update-time: 20260613
description: Public formatted console sink type used for RecordFormatter-driven synchronous console output.
key-word:
- sink
- console
- formatter
- public
---
## Formatted-console-sink-type
`FormattedConsoleSink` is the public console sink type used for formatter-driven text output. It is the concrete sink type returned by both `formatted_console_sink(...)` and `text_console_sink(...)`, and it stores the rendering function used for each record.
### Interface
```moonbit
pub struct FormattedConsoleSink {
formatter : RecordFormatter
}
```
#### output
- `FormattedConsoleSink` - Public synchronous sink type that renders each record through a stored `RecordFormatter`.
### Explanation
Detailed rules explaining key parameters and behaviors
- This is a public root struct, not a type alias.
- The current field is `formatter : RecordFormatter`.
- `formatted_console_sink(...)` constructs this type directly from a formatter function.
- `text_console_sink(...)` also returns this same type after adapting a `TextFormatter` into a `RecordFormatter`.
### How to Use
Here are some specific examples provided.
#### When Need A Typed Formatter-driven Console Sink Value
When code should keep the concrete formatted sink type visible:
```moonbit
let sink : FormattedConsoleSink = formatted_console_sink(fn(rec) { rec.message })
```
In this example, the sink value keeps the low-level formatter-driven console type explicit.
#### When Need A Typed Text-formatted Console Logger
When logging should preserve the formatter-backed console sink type in the logger:
```moonbit
let logger : Logger[FormattedConsoleSink] = Logger::new(
text_console_sink(text_formatter(show_timestamp=false)),
target="pretty",
)
```
In this example, the concrete formatted console sink remains part of the logger type.
### Error Case
e.g.:
- `FormattedConsoleSink` itself does not have a runtime failure mode.
- Output readability and cost still depend on the stored formatter function and its behavior.
### Notes
1. Use `formatted_console_sink(...)` or `text_console_sink(...)` when you need a value of this type.
2. Use `ConsoleSink` or `JsonConsoleSink` when default text or JSON output is enough and a stored formatter function is unnecessary.
+3
View File
@@ -100,8 +100,11 @@ BitLogger API navigation.
## Sink and file ## Sink and file
- [console-sink.md](./console-sink.md) - [console-sink.md](./console-sink.md)
- [console-sink-type.md](./console-sink-type.md)
- [json-console-sink.md](./json-console-sink.md) - [json-console-sink.md](./json-console-sink.md)
- [json-console-sink-type.md](./json-console-sink-type.md)
- [formatted-console-sink.md](./formatted-console-sink.md) - [formatted-console-sink.md](./formatted-console-sink.md)
- [formatted-console-sink-type.md](./formatted-console-sink-type.md)
- [text-console-sink.md](./text-console-sink.md) - [text-console-sink.md](./text-console-sink.md)
- [callback-sink.md](./callback-sink.md) - [callback-sink.md](./callback-sink.md)
- [formatted-callback-sink.md](./formatted-callback-sink.md) - [formatted-callback-sink.md](./formatted-callback-sink.md)
+72
View File
@@ -0,0 +1,72 @@
---
name: json-console-sink-type
group: api
category: sink
update-time: 20260613
description: Public JSON console sink type used for machine-readable synchronous stdout output.
key-word:
- sink
- json
- type
- public
---
## Json-console-sink-type
`JsonConsoleSink` is the public console sink type used for machine-readable JSON stdout output. It is the concrete sink type returned by `json_console_sink()` and is intended for structured log pipelines rather than human-focused text formatting.
### Interface
```moonbit
pub struct JsonConsoleSink {
_dummy : Unit
}
```
#### output
- `JsonConsoleSink` - Public synchronous sink type that writes records to the console as JSON.
### Explanation
Detailed rules explaining key parameters and behaviors
- This is a public root struct, not a type alias.
- The current visible field is `_dummy : Unit`, which exists only to carry the concrete sink type.
- `json_console_sink()` constructs this type as the built-in structured console output path.
- `Logger[JsonConsoleSink]` keeps the concrete machine-readable console sink type visible when typed composition matters.
### How to Use
Here are some specific examples provided.
#### When Need A Typed JSON Console Sink Value
When code should keep the concrete structured console sink type visible:
```moonbit
let sink : JsonConsoleSink = json_console_sink()
```
In this example, the sink value stays explicit and can be passed into typed logger construction.
#### When Need A Typed Structured Stdout Logger
When logging should preserve the JSON console sink type in the logger:
```moonbit
let logger : Logger[JsonConsoleSink] = Logger::new(json_console_sink(), target="api")
```
In this example, the concrete structured stdout sink remains part of the logger type.
### Error Case
e.g.:
- `JsonConsoleSink` itself does not have a runtime failure mode.
- Console output still depends on the current runtime environment even though the sink type is always constructible.
### Notes
1. Use `json_console_sink()` when you need a value of this type.
2. Use `ConsoleSink` or `FormattedConsoleSink` when output should be plain text or custom-formatted text instead of JSON.