diff options
| author | Lee Cannon <leecannon@leecannon.xyz> | 2021-06-09 10:23:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-09 12:23:45 +0300 |
| commit | 50822530d334336b6ca00424547e8c03ebb6e2df (patch) | |
| tree | cac5f01523c37aeb84c13a8043447dfa8bb9c24d /lib/std/log.zig | |
| parent | 5fa5fba3ce57b128b37b371eb3daa8ca39221613 (diff) | |
| download | zig-50822530d334336b6ca00424547e8c03ebb6e2df.tar.gz zig-50822530d334336b6ca00424547e8c03ebb6e2df.zip | |
Provide method to set logging level per scope (#8584)
Diffstat (limited to 'lib/std/log.zig')
| -rw-r--r-- | lib/std/log.zig | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/std/log.zig b/lib/std/log.zig index 215e611bc1..9d9271213b 100644 --- a/lib/std/log.zig +++ b/lib/std/log.zig @@ -117,13 +117,30 @@ pub const level: Level = if (@hasDecl(root, "log_level")) else default_level; +pub const ScopeLevel = struct { + scope: @Type(.EnumLiteral), + level: Level, +}; + +const scope_levels = if (@hasDecl(root, "scope_levels")) + root.scope_levels +else + [0]ScopeLevel{}; + fn log( comptime message_level: Level, comptime scope: @Type(.EnumLiteral), comptime format: []const u8, args: anytype, ) void { - if (@enumToInt(message_level) <= @enumToInt(level)) { + const effective_log_level = blk: { + inline for (scope_levels) |scope_level| { + if (scope_level.scope == scope) break :blk scope_level.level; + } + break :blk level; + }; + + if (@enumToInt(message_level) <= @enumToInt(effective_log_level)) { if (@hasDecl(root, "log")) { root.log(message_level, scope, format, args); } else if (std.Target.current.os.tag == .freestanding) { |
