authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-10 12:41:26-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-10 16:52:29-07:00
logbd5745ddf2f5a5d42553b30241f0a44550f1672e
tree06632df6dbbbb719830929ea5ff36c33b14fef2b
parent5360968e03525be4d312ca61a7ba2dcb7890ec42

std.log.defaultLog: provide a small buffer


1 files changed, 8 insertions(+), 11 deletions(-)

lib/std/log.zig+8-11
...@@ -137,8 +137,11 @@ pub fn defaultLogEnabled(comptime message_level: Level) bool {...@@ -137,8 +137,11 @@ pub fn defaultLogEnabled(comptime message_level: Level) bool {
137 return comptime logEnabled(message_level, default_log_scope);137 return comptime logEnabled(message_level, default_log_scope);
138}138}
139139
140/// The default implementation for the log function, custom log functions may140/// The default implementation for the log function. Custom log functions may
141/// forward log messages to this function.141/// forward log messages to this function.
142///
143/// Uses a 64-byte buffer for formatted printing which is flushed before this
144/// function returns.
142pub fn defaultLog(145pub fn defaultLog(
143 comptime message_level: Level,146 comptime message_level: Level,
144 comptime scope: @Type(.enum_literal),147 comptime scope: @Type(.enum_literal),
...@@ -147,16 +150,10 @@ pub fn defaultLog(...@@ -147,16 +150,10 @@ pub fn defaultLog(
147) void {150) void {
148 const level_txt = comptime message_level.asText();151 const level_txt = comptime message_level.asText();
149 const prefix2 = if (scope == .default) ": " else "(" ++ @tagName(scope) ++ "): ";152 const prefix2 = if (scope == .default) ": " else "(" ++ @tagName(scope) ++ "): ";
150 const stderr = std.fs.File.stderr().deprecatedWriter();153 var buffer: [64]u8 = undefined;
151 var bw = std.io.bufferedWriter(stderr);154 const stderr = std.debug.lockStderrWriter(&buffer);
152 const writer = bw.writer();155 defer std.debug.unlockStderrWriter();
153156 nosuspend stderr.print(level_txt ++ prefix2 ++ format ++ "\n", args) catch return;
154 std.debug.lockStdErr();
155 defer std.debug.unlockStdErr();
156 nosuspend {
157 writer.print(level_txt ++ prefix2 ++ format ++ "\n", args) catch return;
158 bw.flush() catch return;
159 }
160}157}
161158
162/// Returns a scoped logging namespace that logs all messages using the scope159/// Returns a scoped logging namespace that logs all messages using the scope