v / vlib / net / jsonrpc / logging.v
48 lines · 40 sloc · 1.43 KB · f53920bcec4f43594143c41772b42b6465f1c6a9
Raw
1module jsonrpc
2
3import log
4
5// LoggingInterceptor is simple logging full-fledged Interceptor
6// messages will be written in `log`.get_level() Level
7@[heap]
8pub struct LoggingInterceptor {
9pub mut:
10 log log.Log
11}
12
13// on_event logs event `name` and `data` into provided `log`
14pub fn (mut l LoggingInterceptor) on_event(name string, data string) {
15 msg := '[EVENT] name=${name} data=${data}'
16 l.log.send_output(msg, l.log.get_level())
17}
18
19// on_encoded_request logs json encoded `jsonrpc.Request` as string
20pub fn (mut l LoggingInterceptor) on_encoded_request(req []u8) ! {
21 msg := '[RAW REQ] ${req.bytestr()}'
22 l.log.send_output(msg, l.log.get_level())
23}
24
25// on_request logs `jsonrpc.Request` method, params and id
26pub fn (mut l LoggingInterceptor) on_request(req &Request) ! {
27 msg := '[REQ] method=${req.method} params=${req.params} id=${req.id}'
28 l.log.send_output(msg, l.log.get_level())
29}
30
31// on_response logs `jsonrpc.Response` result, error and id
32pub fn (mut l LoggingInterceptor) on_response(resp &Response) {
33 mut msg := '[RESP] result=${resp.result} '
34 if resp.error.code != 0 {
35 msg = msg + 'error=${resp.error}'
36 } else {
37 msg = msg + 'error=none'
38 }
39 msg = msg + ' id=${resp.id}'
40
41 l.log.send_output(msg, l.log.get_level())
42}
43
44// on_encoded_response logs json encoded `jsonrpc.Response` as string
45pub fn (mut l LoggingInterceptor) on_encoded_response(resp []u8) {
46 msg := '[RAW RESP] ${resp.bytestr()}'
47 l.log.send_output(msg, l.log.get_level())
48}
49