diff options
author | Lassi Pulkkinen <lassi@pulk.fi> | 2024-10-31 03:11:21 +0200 |
---|---|---|
committer | Lassi Pulkkinen <lassi@pulk.fi> | 2024-10-31 03:51:35 +0200 |
commit | ae44478b30d890fe0fb04022f44d474dcdcc3f9d (patch) | |
tree | 5f462459ae4b47d22114eed717d1382d08cf4dfe /trace/tee.ha |
Diffstat (limited to 'trace/tee.ha')
-rw-r--r-- | trace/tee.ha | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/trace/tee.ha b/trace/tee.ha new file mode 100644 index 0000000..53bd9ea --- /dev/null +++ b/trace/tee.ha @@ -0,0 +1,26 @@ +use fmt; + +export type teetracer = struct { + tracer, + sinks: []*tracer, +}; + +export fn tee(sinks: *tracer...) teetracer = { + return teetracer { + log = &tee_log, + sinks = sinks, + }; +}; + +export fn tee_log( + tr: *tracer, + ctx: nullable *context, + lvl: level, + fmt: str, + fields: fmt::field... +) void = { + const tr = tr: *teetracer; + for (let i = 0z; i < len(tr.sinks); i += 1) { + log(tr.sinks[i], ctx, lvl, fmt, fields...); + }; +}; |