mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-29 14:06:34 +00:00
86 lines
2.5 KiB
MoonBit
86 lines
2.5 KiB
MoonBit
///|
|
|
pub fn file_rotation_config_to_json(
|
|
config : FileRotation,
|
|
) -> @json_parser.JsonValue {
|
|
let obj : Map[String, @json_parser.JsonValue] = {
|
|
"max_bytes": @json_parser.JsonValue::Number(config.max_bytes.to_double()),
|
|
"max_backups": @json_parser.JsonValue::Number(
|
|
config.max_backups.to_double(),
|
|
),
|
|
}
|
|
match config.native_wide_max_bytes {
|
|
Some(value) =>
|
|
obj["max_bytes_i64"] = @json_parser.JsonValue::String(value.to_string())
|
|
None => ()
|
|
}
|
|
@json_parser.JsonValue::Object(obj)
|
|
}
|
|
|
|
///|
|
|
pub fn file_sink_policy_to_json(
|
|
policy : FileSinkPolicy,
|
|
) -> @json_parser.JsonValue {
|
|
let obj : Map[String, @json_parser.JsonValue] = {
|
|
"append": @json_parser.JsonValue::Bool(policy.append),
|
|
"auto_flush": @json_parser.JsonValue::Bool(policy.auto_flush),
|
|
}
|
|
match policy.rotation {
|
|
None => obj["rotation"] = @json_parser.JsonValue::Null
|
|
Some(rotation) => obj["rotation"] = file_rotation_config_to_json(rotation)
|
|
}
|
|
@json_parser.JsonValue::Object(obj)
|
|
}
|
|
|
|
///|
|
|
pub fn stringify_file_sink_policy(
|
|
policy : FileSinkPolicy,
|
|
pretty? : Bool = false,
|
|
) -> String {
|
|
let value = file_sink_policy_to_json(policy)
|
|
if pretty {
|
|
@json_parser.stringify_pretty(value, 2)
|
|
} else {
|
|
@json_parser.stringify(value)
|
|
}
|
|
}
|
|
|
|
///|
|
|
pub fn file_sink_state_to_json(state : FileSinkState) -> @json_parser.JsonValue {
|
|
let obj : Map[String, @json_parser.JsonValue] = {
|
|
"path": @json_parser.JsonValue::String(state.path),
|
|
"available": @json_parser.JsonValue::Bool(state.available),
|
|
"append": @json_parser.JsonValue::Bool(state.append),
|
|
"auto_flush": @json_parser.JsonValue::Bool(state.auto_flush),
|
|
"open_failures": @json_parser.JsonValue::Number(
|
|
state.open_failures.to_double(),
|
|
),
|
|
"write_failures": @json_parser.JsonValue::Number(
|
|
state.write_failures.to_double(),
|
|
),
|
|
"flush_failures": @json_parser.JsonValue::Number(
|
|
state.flush_failures.to_double(),
|
|
),
|
|
"rotation_failures": @json_parser.JsonValue::Number(
|
|
state.rotation_failures.to_double(),
|
|
),
|
|
}
|
|
match state.rotation {
|
|
None => obj["rotation"] = @json_parser.JsonValue::Null
|
|
Some(rotation) => obj["rotation"] = file_rotation_config_to_json(rotation)
|
|
}
|
|
@json_parser.JsonValue::Object(obj)
|
|
}
|
|
|
|
///|
|
|
pub fn stringify_file_sink_state(
|
|
state : FileSinkState,
|
|
pretty? : Bool = false,
|
|
) -> String {
|
|
let value = file_sink_state_to_json(state)
|
|
if pretty {
|
|
@json_parser.stringify_pretty(value, 2)
|
|
} else {
|
|
@json_parser.stringify(value)
|
|
}
|
|
}
|