From 435f498421b01d972cf33dc7bfddac8359649c98 Mon Sep 17 00:00:00 2001 From: Edward Zhou Date: Sun, 17 Oct 2021 15:54:52 +0800 Subject: [PATCH] metadata_matches supports array --- lib/logger_file_backend.ex | 11 +++++++++++ test/logger_file_backend_test.exs | 2 ++ 2 files changed, 13 insertions(+) diff --git a/lib/logger_file_backend.ex b/lib/logger_file_backend.ex index 13f6bb5..581c0dd 100644 --- a/lib/logger_file_backend.ex +++ b/lib/logger_file_backend.ex @@ -145,6 +145,17 @@ defmodule LoggerFileBackend do # all of the filter keys are present def metadata_matches?(_md, []), do: true + def metadata_matches?(md, [{key, [_ | _] = val} | rest]) do + case Keyword.fetch(md, key) do + {:ok, md_val} -> + (md_val in val) && metadata_matches?(md, rest) + + # fail on first mismatch + _ -> + false + end + end + def metadata_matches?(md, [{key, val} | rest]) do case Keyword.fetch(md, key) do {:ok, ^val} -> diff --git a/test/logger_file_backend_test.exs b/test/logger_file_backend_test.exs index 6c26f50..9c4e5d9 100644 --- a/test/logger_file_backend_test.exs +++ b/test/logger_file_backend_test.exs @@ -43,6 +43,8 @@ defmodule LoggerFileBackendTest do test "metadata_matches?" do # exact match assert metadata_matches?([a: 1], a: 1) == true + # included in array match + assert metadata_matches?([a: 1], a: [1, 2]) == true # total mismatch assert metadata_matches?([b: 1], a: 1) == false # default to allow