Files
BitLogger/docs/api/async-logger-state-to-json.md
T
2026-05-12 13:32:15 +08:00

2.2 KiB

name, group, category, update-time, description, key-word
name group category update-time description key-word
async-logger-state-to-json api async 20260512 Convert an AsyncLoggerState snapshot into a JSON value for diagnostics and transport.
async
state
json
public

Async-logger-state-to-json

Convert AsyncLoggerState into a JsonValue. This helper is the structured export path for async logger runtime snapshots when callers want machine-readable diagnostics instead of a plain string.

Interface

pub fn async_logger_state_to_json(state : AsyncLoggerState) -> @json_parser.JsonValue {}

input

  • state : AsyncLoggerState - Snapshot produced by AsyncLogger::state().

output

  • JsonValue - Structured JSON representation of the async logger snapshot.

Explanation

Detailed rules explaining key parameters and behaviors

  • The JSON includes runtime mode, worker support, queue counters, lifecycle flags, last error, and flush policy.
  • This helper is suitable for health endpoints, diagnostics payloads, and custom serialization flows.
  • It shares the same stable field names used by stringify_async_logger_state(...).
  • The state must already have been captured before serialization.

How to Use

Here are some specific examples provided.

When Need Machine-readable Diagnostics

When the snapshot should be embedded into a JSON payload:

let state_json = async_logger_state_to_json(logger.state())

In this example, callers receive a structured value that can be composed into larger JSON objects.

When Need A Snapshot Before Custom Stringify

When another serializer or pipeline expects a JSON value:

let payload = async_logger_state_to_json(logger.state())
println(@json_parser.stringify(payload))

In this example, the helper stays useful even outside the built-in stringify wrapper.

Error Case

e.g.:

  • If the snapshot contains no error, last_error is serialized as an empty string.

  • If the queue is empty, pending_count and dropped_count are still serialized normally as numeric values.

Notes

  1. Use this API when downstream code wants a JSON value rather than a ready-made string.

  2. Pair it with AsyncLogger::state() to capture the snapshot first.