diff --git a/lib/logger_json/formatter/redactor_encoder.ex b/lib/logger_json/formatter/redactor_encoder.ex index 8b85a3e..45049db 100644 --- a/lib/logger_json/formatter/redactor_encoder.ex +++ b/lib/logger_json/formatter/redactor_encoder.ex @@ -32,6 +32,11 @@ defmodule LoggerJSON.Formatter.RedactorEncoder do def encode("[REDACTED]", _redactors), do: "[REDACTED]" def encode(binary, _redactors) when is_binary(binary), do: encode_binary(binary) def encode(%Jason.Fragment{} = fragment, _redactors), do: fragment + def encode(%NaiveDateTime{} = naive_datetime, _redactors), do: naive_datetime + def encode(%DateTime{} = datetime, _redactors), do: datetime + def encode(%Date{} = date, _redactors), do: date + def encode(%Time{} = time, _redactors), do: time + def encode(%Decimal{} = decimal, _redactors), do: decimal def encode(%_struct{} = struct, redactors) do struct diff --git a/test/logger_json/formatter/redactor_encoder_test.exs b/test/logger_json/formatter/redactor_encoder_test.exs index 68c21e8..f4e9abc 100644 --- a/test/logger_json/formatter/redactor_encoder_test.exs +++ b/test/logger_json/formatter/redactor_encoder_test.exs @@ -35,6 +35,17 @@ defmodule LoggerJSON.Formatter.RedactorEncoderTest do assert encode(123, @redactors) == 123 end + test "allows dates and times" do + assert encode(~U[2024-01-01 00:00:00Z], @redactors) == ~U[2024-01-01 00:00:00Z] + assert encode(~N[2024-01-01 00:00:00], @redactors) == ~N[2024-01-01 00:00:00] + assert encode(~D[2024-01-01], @redactors) == ~D[2024-01-01] + assert encode(~T[00:00:00], @redactors) == ~T[00:00:00] + end + + test "allows decimals" do + assert encode(Decimal.new("1.2"), @redactors) == Decimal.new("1.2") + end + test "strips Structs" do assert encode(%IDStruct{id: "hello"}, @redactors) == %{id: "hello"} end