Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow the usage of JSON for Elixir 1.18+ #146

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
wrap require in a macro
altjohndev committed Jan 8, 2025
commit 8923f4eb02225fb6621a5954dfd0a3bec4191d68
8 changes: 8 additions & 0 deletions lib/logger_json/formatter.ex
Original file line number Diff line number Diff line change
@@ -25,4 +25,12 @@ defmodule LoggerJSON.Formatter do
@doc false
@spec encoder_protocol :: module()
def encoder_protocol, do: @encoder_protocol

@doc false
@spec require_jason_helpers :: Macro.t()
defmacro require_jason_helpers do
quote do
require Jason.Helpers
end
end
end
6 changes: 3 additions & 3 deletions lib/logger_json/formatters/basic.ex
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ defmodule LoggerJSON.Formatters.Basic do
}
"""
import LoggerJSON.Formatter.{MapBuilder, DateTime, Message, Metadata, RedactorEncoder}
alias LoggerJSON.Formatter
require LoggerJSON.Formatter, as: Formatter

@behaviour Formatter

@@ -76,8 +76,8 @@ defmodule LoggerJSON.Formatters.Basic do
end

if Code.ensure_loaded?(Plug.Conn) do
if @encoder == Jason and Code.ensure_loaded?(Jason) do
require Jason.Helpers
if @encoder == Jason do
Formatter.require_jason_helpers()

defp format_http_request(%{conn: %Plug.Conn{} = conn}) do
Jason.Helpers.json_map(
6 changes: 3 additions & 3 deletions lib/logger_json/formatters/datadog.ex
Original file line number Diff line number Diff line change
@@ -42,7 +42,7 @@ defmodule LoggerJSON.Formatters.Datadog do
}
"""
import LoggerJSON.Formatter.{MapBuilder, DateTime, Message, Metadata, Code, RedactorEncoder}
alias LoggerJSON.Formatter
require LoggerJSON.Formatter, as: Formatter

@behaviour Formatter

@@ -211,8 +211,8 @@ defmodule LoggerJSON.Formatters.Datadog do
defp format_http_request(_meta), do: nil

if Code.ensure_loaded?(Plug.Conn) do
if @encoder == Jason and Code.ensure_loaded?(Jason) do
require Jason.Helpers
if @encoder == Jason do
Formatter.require_jason_helpers()

defp build_http_request_data(%Plug.Conn{} = conn, request_id) do
request_url = Plug.Conn.request_url(conn)
14 changes: 7 additions & 7 deletions lib/logger_json/formatters/google_cloud.ex
Original file line number Diff line number Diff line change
@@ -89,7 +89,7 @@ defmodule LoggerJSON.Formatters.GoogleCloud do
}
"""
import LoggerJSON.Formatter.{MapBuilder, DateTime, Message, Metadata, Code, RedactorEncoder}
alias LoggerJSON.Formatter
require LoggerJSON.Formatter, as: Formatter

@behaviour Formatter

@@ -243,8 +243,8 @@ defmodule LoggerJSON.Formatters.GoogleCloud do
defp format_crash_report_location(_meta), do: nil

if Code.ensure_loaded?(Plug.Conn) do
if @encoder == Jason and Code.ensure_loaded?(Jason) do
require Jason.Helpers
if @encoder == Jason do
Formatter.require_jason_helpers()

defp format_http_request(%{conn: %Plug.Conn{} = conn} = assigns) do
request_method = conn.method |> to_string() |> String.upcase()
@@ -352,8 +352,8 @@ defmodule LoggerJSON.Formatters.GoogleCloud do
# coveralls-ignore-stop

# https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogEntryOperation
if @encoder == Jason and Code.ensure_loaded?(Jason) do
require Jason.Helpers
if @encoder == Jason do
Formatter.require_jason_helpers()

defp format_operation(%{request_id: request_id, pid: pid}),
do: Jason.Helpers.json_map(id: request_id, producer: inspect(pid))
@@ -369,8 +369,8 @@ defmodule LoggerJSON.Formatters.GoogleCloud do
defp format_operation(_meta), do: nil

# https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogEntrySourceLocation
if @encoder == Jason and Code.ensure_loaded?(Jason) do
require Jason.Helpers
if @encoder == Jason do
Formatter.require_jason_helpers()

defp format_source_location(%{file: file, line: line, mfa: {m, f, a}}) do
Jason.Helpers.json_map(