Skip to content

Commit

Permalink
Allow to set metadata to {:all_except, keys}
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewDryga committed Jan 30, 2024
1 parent 65a9ecb commit cd1b5ba
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
9 changes: 8 additions & 1 deletion lib/logger_json.ex
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,8 @@ defmodule LoggerJSON do

defp configure_metadata([]), do: []
defp configure_metadata(:all), do: :all
defp configure_metadata(metadata) when is_list(metadata), do: Enum.reverse(metadata)
defp configure_metadata({:all_except, keys}), do: {:all_except, Enum.reverse(keys)}
defp configure_metadata(keys) when is_list(keys), do: Enum.reverse(keys)

defp configure_merge(env, options), do: Keyword.merge(env, options, fn _key, _v1, v2 -> v2 end)

Expand Down Expand Up @@ -298,6 +299,12 @@ defmodule LoggerJSON do
# Drops keys that can not or should not be encoded to JSON
def take_metadata(metadata, keys_or_all, ignored_keys \\ [])

def take_metadata(metadata, {:all_except, keys}, ignored_keys) do
metadata
|> Keyword.drop(ignored_keys ++ keys ++ @ignored_metadata_keys)
|> Enum.into(%{})
end

def take_metadata(metadata, :all, ignored_keys) do
metadata
|> Keyword.drop(ignored_keys ++ @ignored_metadata_keys)
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ defmodule LoggerJSON.Mixfile do
use Mix.Project

@source_url "https://github.com/Nebo15/logger_json"
@version "5.1.2"
@version "5.1.3"

def project do
[
Expand Down
15 changes: 15 additions & 0 deletions test/unit/logger_json/formatters/google_cloud_logger_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,21 @@ defmodule LoggerJSON.GoogleCloudLoggerTest do
assert %{"dynamic_metadata" => 5} = log
end

test "can be configured to :all_except" do
Logger.configure_backend(LoggerJSON, metadata: {:all_except, [:user_id]})

Logger.metadata(user_id: 11)
Logger.metadata(dynamic_metadata: 5)

log =
fn -> Logger.debug("hello") end
|> capture_log()
|> Jason.decode!()

refute Map.has_key?(log, "user_id")
assert Map.has_key?(log, "dynamic_metadata")
end

test "can be empty" do
Logger.configure_backend(LoggerJSON, metadata: [])

Expand Down

0 comments on commit cd1b5ba

Please sign in to comment.