this repo has no description
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}