mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-24 08:52:35 +00:00
77 lines
1.5 KiB
MoonBit
77 lines
1.5 KiB
MoonBit
pub struct Field {
|
|
key : String
|
|
value : String
|
|
}
|
|
|
|
pub fn field(key : String, value : String) -> Field {
|
|
{ key, value }
|
|
}
|
|
|
|
pub fn fields(entries : Array[(String, String)]) -> Array[Field] {
|
|
entries.map(fn(entry) {
|
|
field(entry.0, entry.1)
|
|
})
|
|
}
|
|
|
|
pub struct Record {
|
|
level : Level
|
|
timestamp_ms : UInt64
|
|
target : String
|
|
message : String
|
|
fields : Array[Field]
|
|
}
|
|
|
|
pub fn Record::new(
|
|
level : Level,
|
|
message : String,
|
|
timestamp_ms~ : UInt64 = 0UL,
|
|
target~ : String = "",
|
|
fields~ : Array[Field] = [],
|
|
) -> Record {
|
|
{ level, timestamp_ms, target, message, fields }
|
|
}
|
|
|
|
pub fn Field::with_value(self : Field, value : String) -> Field {
|
|
field(self.key, value)
|
|
}
|
|
|
|
pub fn Record::with_target(self : Record, target : String) -> Record {
|
|
Record::new(
|
|
self.level,
|
|
self.message,
|
|
timestamp_ms=self.timestamp_ms,
|
|
target=target,
|
|
fields=self.fields,
|
|
)
|
|
}
|
|
|
|
pub fn Record::with_message(self : Record, message : String) -> Record {
|
|
Record::new(
|
|
self.level,
|
|
message,
|
|
timestamp_ms=self.timestamp_ms,
|
|
target=self.target,
|
|
fields=self.fields,
|
|
)
|
|
}
|
|
|
|
pub fn Record::with_fields(self : Record, fields : Array[Field]) -> Record {
|
|
Record::new(
|
|
self.level,
|
|
self.message,
|
|
timestamp_ms=self.timestamp_ms,
|
|
target=self.target,
|
|
fields=fields,
|
|
)
|
|
}
|
|
|
|
pub fn Record::copy(self : Record) -> Record {
|
|
Record::new(
|
|
self.level,
|
|
self.message,
|
|
timestamp_ms=self.timestamp_ms,
|
|
target=self.target,
|
|
fields=self.fields,
|
|
)
|
|
}
|