remove separate enabled function

This commit is contained in:
2025-11-04 08:54:41 +01:00
parent fa61b79252
commit 109aee806d

View File

@@ -5,16 +5,14 @@ const builtin = @import("builtin");
pub const options: Options = if (@hasDecl(root, "faller_options")) root.faller_options else .{}; pub const options: Options = if (@hasDecl(root, "faller_options")) root.faller_options else .{};
pub const Options = struct { pub const Options = struct {
/// If more specialised ways to log are required replace this function.
/// This could be useful for logging to different things than `stderr` or for specifying whether
/// we should log with environment variables or `and`-based queries.
function: fn ( function: fn (
comptime []const @Type(.enum_literal), comptime []const @Type(.enum_literal),
comptime []const u8, comptime []const u8,
anytype, anytype,
) void = defaultLogFunction, ) void = defaultLogFunction,
/// If more specialised ways to determine whether something should be logged are required,
/// replace this function.
/// This could be useful for instance for specifying it with environment variables or
/// `and`-based queries.
enabled: fn (comptime []const @Type(.enum_literal)) bool = logEnabled,
/// If there is at least one tag given this acts like a whitelist. Meaning if **any** of the /// If there is at least one tag given this acts like a whitelist. Meaning if **any** of the
/// tags is present it is logged. May be overwritten by `tags_disabled`. /// tags is present it is logged. May be overwritten by `tags_disabled`.
tags_enabled: []const @Type(.enum_literal) = &.{}, tags_enabled: []const @Type(.enum_literal) = &.{},
@@ -27,7 +25,7 @@ pub const Options = struct {
pub const empty_logger = Logger{ .base_tags = &.{} }; pub const empty_logger = Logger{ .base_tags = &.{} };
/// A Logger. Examples: /// A tag based Logger. Examples:
/// ///
/// ```zig /// ```zig
/// pub const module_log = Logger{ .base_tags = &.{.module} }; /// pub const module_log = Logger{ .base_tags = &.{.module} };
@@ -65,10 +63,7 @@ pub fn logTags(
args: anytype, args: anytype,
) void { ) void {
if (builtin.is_test and options.disabled_in_test) return; if (builtin.is_test and options.disabled_in_test) return;
const all_tags = comptime logger.base_tags ++ tags; const all_tags = comptime logger.base_tags ++ tags;
if (!options.enabled(all_tags)) return;
options.function(all_tags, format, args); options.function(all_tags, format, args);
} }
@@ -109,6 +104,7 @@ fn defaultLogFunction(
args: anytype, args: anytype,
) void { ) void {
if (tags.len == 0) @compileError("Need at least one tag for logging."); if (tags.len == 0) @compileError("Need at least one tag for logging.");
if (comptime !logEnabled(tags)) return;
comptime var prefix: []const u8 = ""; comptime var prefix: []const u8 = "";
comptime for (tags) |tag| { comptime for (tags) |tag| {