Files
BitLogger/docs/api/record.md
T
2026-06-13 21:05:49 +08:00

74 lines
2.3 KiB
Markdown

---
name: record
group: api
category: record
update-time: 20260613
description: Public record alias used across formatting, filtering, sinks, and logger output paths.
key-word:
- record
- alias
- logging
- public
---
## Record
`Record` is the public log-event data type used throughout BitLogger. It is a direct alias to the core record model, so formatters, predicates, sinks, patches, and callback-based integrations all share the same structured event shape.
### Interface
```moonbit
pub type Record = @core.Record
```
#### output
- `Record` - Public structured log-event value containing `level`, `timestamp_ms`, `target`, `message`, and `fields`.
### Explanation
Detailed rules explaining key parameters and behaviors
- This is a type alias, not a wrapper or a runtime logger handle.
- The current record fields are `level : Level`, `timestamp_ms : UInt64`, `target : String`, `message : String`, and `fields : Array[Field]`.
- `Record` is the common value passed through `Logger`, `AsyncLogger`, sink callbacks, formatters, predicates, and patch helpers.
- Direct construction usually starts with `Record::new(...)`, while logger write APIs create records for you during normal logging.
### How to Use
Here are some specific examples provided.
#### When Need A Shared Event Shape For Low-level Integrations
When custom formatter or sink code should work with the same event model as the logger runtime:
```moonbit
let callback = fn(rec : Record) {
println(format_json(rec))
}
```
In this example, the alias makes it explicit that the callback receives the public record type used everywhere else in the API.
#### When Need To Inspect Record Data Directly
When filters, tests, or adapters should read event fields without going through string output:
```moonbit
let rec = Record::new(Level::Info, "started", target="svc")
println(rec.target)
```
In this example, the caller reads the structured event data directly instead of reparsing formatted output.
### Error Case
e.g.:
- `Record` itself does not have a runtime failure mode.
- Empty `target` or empty `fields` are valid and are represented directly in the record value.
### Notes
1. Use `Record::new(...)` when a record should be created explicitly outside normal logger write APIs.
2. This alias is the shared event contract for sync logging, async logging, filtering, patching, and formatting.