this repo has no description
at main 1.4 kB view raw
1const std = @import("std"); 2 3pub fn logFn( 4 comptime message_level: std.log.Level, 5 comptime scope: @TypeOf(.enum_literal), 6 comptime format: []const u8, 7 args_: anytype, 8) void { 9 const prefix = comptime blk: { 10 const level_text = lt: { 11 switch (message_level) { 12 .err => { 13 break :lt "\x1b[31merror \x1b[0m"; 14 }, 15 .warn => { 16 break :lt "\x1b[33mwarning\x1b[0m"; 17 }, 18 .info => { 19 break :lt "\x1b[32minfo \x1b[0m"; 20 }, 21 .debug => { 22 break :lt "\x1b[34mdebug \x1b[0m"; 23 }, 24 } 25 }; 26 const scope_prefix = scope: { 27 if (scope == .default) { 28 break :scope ""; 29 } 30 break :scope " \x1b[90m[\x1b[0m" ++ @tagName(scope) ++ "\x1b[90m]\x1b[0m"; 31 }; 32 33 break :blk level_text ++ scope_prefix ++ "\x1b[90m \x1b[0m"; 34 }; 35 36 const stderr = std.fs.File.stderr().deprecatedWriter(); 37 var bw = std.io.bufferedWriter(stderr); 38 const writer = bw.writer(); 39 40 std.debug.lockStdErr(); 41 defer std.debug.unlockStdErr(); 42 nosuspend { 43 writer.print(prefix ++ format ++ "\x1b[0m\n", args_) catch return; 44 bw.flush() catch return; 45 } 46}