mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-05-30 15:42:25 +00:00
📝 Add record patch API docs
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
---
|
||||
name: redact-field
|
||||
group: api
|
||||
category: patching
|
||||
update-time: 20260512
|
||||
description: Create a reusable record patch that redacts one field key.
|
||||
key-word:
|
||||
- patch
|
||||
- redact
|
||||
- fields
|
||||
- public
|
||||
---
|
||||
|
||||
## Redact-field
|
||||
|
||||
Create a `RecordPatch` that replaces the value of every field whose key matches the given key. Use it when one sensitive field must be masked before records reach sinks.
|
||||
|
||||
### Interface
|
||||
|
||||
```moonbit
|
||||
pub fn redact_field(key : String, placeholder~ : String = "***") -> RecordPatch {}
|
||||
```
|
||||
|
||||
#### input
|
||||
|
||||
- `key : String` - Field key whose matching values should be replaced.
|
||||
- `placeholder : String` - Replacement value written into each matching field.
|
||||
|
||||
#### output
|
||||
|
||||
- `RecordPatch` - Patch that returns a record with matching field values redacted.
|
||||
|
||||
### Explanation
|
||||
|
||||
Detailed rules explaining key parameters and behaviors
|
||||
|
||||
- The patch maps over the full field list and rewrites each field whose key equals `key`.
|
||||
- Non-matching fields are preserved unchanged.
|
||||
- All matching entries are redacted, not just the first one.
|
||||
- The default placeholder is `"***"`, but callers can provide a different mask string.
|
||||
|
||||
### How to Use
|
||||
|
||||
Here are some specific examples provided.
|
||||
|
||||
#### When Mask One Sensitive Field
|
||||
|
||||
When authentication logs may carry a token:
|
||||
```moonbit
|
||||
let logger = Logger::new(console_sink(), target="auth")
|
||||
.with_patch(redact_field("token"))
|
||||
```
|
||||
|
||||
In this example, every `token` field value is replaced before output.
|
||||
|
||||
#### When Use A Custom Placeholder
|
||||
|
||||
When compliance rules require a specific visible marker:
|
||||
```moonbit
|
||||
let patch = redact_field("password", placeholder="[redacted]")
|
||||
```
|
||||
|
||||
In this example, matching field values become `[redacted]` instead of the default mask.
|
||||
|
||||
### Error Case
|
||||
|
||||
e.g.:
|
||||
- If the record has no matching field key, the patch returns a structurally identical field list.
|
||||
|
||||
- If `placeholder` is empty, matching values are replaced by an empty string.
|
||||
|
||||
### Notes
|
||||
|
||||
1. This helper only rewrites fields; it does not search message text.
|
||||
|
||||
2. Use `redact_fields(...)` when several keys should share the same masking rule.
|
||||
|
||||
Reference in New Issue
Block a user