From 402888423de9764c22175df4cc41d79157895f3d Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Tue, 11 Nov 2025 10:34:59 +0100 Subject: add basic server --- src/log.zig | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/log.zig (limited to 'src/log.zig') diff --git a/src/log.zig b/src/log.zig new file mode 100644 index 0000000..9d2b444 --- /dev/null +++ b/src/log.zig @@ -0,0 +1,56 @@ +const std = @import("std"); + +const ansi = @import("ansi.zig"); + +var log_buffer: [1024]u8 = undefined; +var writer_stderr = std.fs.File.stderr().writer(&log_buffer); +const stderr = &writer_stderr.interface; +var log_lock = std.Thread.Mutex{}; + +pub fn handler( + comptime message_level: std.log.Level, + comptime scope: @TypeOf(.enum_literal), + comptime format: []const u8, + args: anytype, +) void { + log_lock.lock(); + defer log_lock.unlock(); + defer stderr.flush() catch unreachable; + + const color = switch (message_level) { + .err => .red, + .warn => .yellow, + .info => .blue, + .debug => .magenta, + }; + + stderr.print( + "{f}{f}", + .{ + ansi.ClearLine {}, + ansi.Styled { + .text = " " ++ (comptime message_level.asText()) ++ " ", + .bg = color, + .bold = true, + }, + }, + ) catch unreachable; + + if (scope != .default) { + stderr.print( + "{f}", + .{ + ansi.Styled { + .text = " " ++ @tagName(scope) ++ " ", + .bg = .gray, + .fg = .black, + .italic = true, + }, + }, + ) catch unreachable; + } + + stderr.writeByte(' ') catch unreachable; + stderr.print(format, args) catch unreachable; + stderr.writeAll("\n") catch unreachable; +} -- cgit v1.2.3-70-g09d2