Skip to content

File-rotation-config-to-json ​

Convert FileRotation into a Json. On the root src facade, this helper forwards to the concrete serializer owned by src/file_model.

Interface ​

moonbit
pub fn file_rotation_config_to_json(config : FileRotation) -> Json {}

input ​

  • config : FileRotation - File rotation config value to export.

output ​

  • Json - Structured JSON representation of the rotation policy.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • The output always includes max_bytes and max_backups.
  • The root surface forwards to @file_model.file_rotation_config_to_json(...), which is the real owner of this serialization logic.
  • Both of those compatibility fields are exported as JSON numbers.
  • If the policy carries a wide threshold from file_rotation_i64(...), the output also includes max_bytes_i64 as a JSON string for exact roundtrip transport.
  • This helper serializes the rotation config object itself rather than sink availability, failure counters, or file state.
  • The same JSON shape is reused by sink_config_to_json(...), file sink state export helpers, and larger logger config serialization paths.

How to Use ​

Here are some specific examples provided.

When Need Structured Rotation Policy Export ​

When file rotation settings should be embedded into a larger config payload:

moonbit
let value = file_rotation_config_to_json(file_rotation(1024 * 1024, max_backups=3))

In this example, the rotation policy becomes a reusable JSON value instead of final text.

When Need Manual Sink Config Assembly ​

When code is exporting only the rotation portion of a file-related config flow:

moonbit
let rotation = file_rotation(4096, max_backups=2)
let rotation_json = file_rotation_config_to_json(rotation)

In this example, callers can carry the nested rotation shape without exporting a full sink config.

When Need Exact Wide-threshold Roundtrip ​

When a native large-file policy should preserve the original Int64 threshold in JSON:

moonbit
let rotation = file_rotation_i64(4294967296L, max_backups=2)
let rotation_json = file_rotation_config_to_json(rotation)

In this example, the JSON value includes the compatibility max_bytes view plus max_bytes_i64 as a string.

Error Case ​

e.g.:

  • If callers need a complete sink or logger config snapshot, this helper alone is too narrow and should be paired with sink_config_to_json(...) or logger_config_to_json(...).

  • If callers need text output rather than a JSON value, they should stringify a larger containing config instead of manually formatting this value.

Notes ​

  1. Use this helper when downstream code expects Json rather than a typed FileRotation value.

  2. Pair it with file_rotation(...) when building rotation policy in code before export.

  3. For file_rotation_i64(...), treat max_bytes_i64 as the exact roundtrip field and max_bytes as the compatibility view.

Published from the repository docs folder with VitePress.