src/log.bend
bend-kube-runtime@0.2.0.0 · 31 lines · 6 definitions
1import Base
2import bend-kube-runtime@0.2.0.0/src/json.bend as J
3import bend-kube-runtime@0.2.0.0/src/time.bend as T
4import bend-kube-runtime@0.2.0.0/src/sys.bend as Y
5
6
7
8
9
10
11
12def Log.line(level: String, msg: String, fields: List<&2, J.KV>, w: T.Wall) -> IO(Unit):
13 match w:
14 case +x:
15 IO.print_err(J.Json.show(J.Json.obj(J.KV{"ts", J.JStr{T.Wall.micro(x)}}
16 <> J.KV{"level", J.JStr{level}} <> J.KV{"msg", J.JStr{msg}} <> fields)))
17
18def Log.at(level: String, msg: String, fields: List<&2, J.KV>) -> IO(Unit):
19 IO.bind(U32 & (U32 & U32), Unit, Y.Sys.wall(), w => Log.line(level, msg, fields, T.Wall.of(w)))
20
21def Log.info(msg: String, fields: List<&2, J.KV>) -> IO(Unit):
22 Log.at("info", msg, fields)
23
24def Log.warn(msg: String, fields: List<&2, J.KV>) -> IO(Unit):
25 Log.at("warn", msg, fields)
26
27def Log.error(msg: String, fields: List<&2, J.KV>) -> IO(Unit):
28 Log.at("error", msg, fields)
29
30def Log.kv(k: String, v: String) -> J.KV:
31 J.KV{k, J.JStr{v}}