Skip to content

Commit

Permalink
feat: Tower.Event datetime insead of :logger.timestamp
Browse files Browse the repository at this point in the history
  • Loading branch information
grzuy committed Aug 12, 2024
1 parent 324144f commit 68106b8
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 49 deletions.
27 changes: 17 additions & 10 deletions lib/tower/ephemeral_reporter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,47 +20,54 @@ defmodule Tower.EphemeralReporter do

defp do_report_event(%Event{
id: id,
time: time,
datetime: datetime,
kind: :error,
reason: exception,
stacktrace: stacktrace,
metadata: metadata
}) do
add_error(id, time, exception.__struct__, Exception.message(exception), stacktrace, metadata)
add_error(
id,
datetime,
exception.__struct__,
Exception.message(exception),
stacktrace,
metadata
)
end

defp do_report_event(%Event{
id: id,
time: time,
datetime: datetime,
kind: :exit,
reason: reason,
stacktrace: stacktrace,
metadata: metadata
}) do
add_error(id, time, :exit, reason, stacktrace, metadata)
add_error(id, datetime, :exit, reason, stacktrace, metadata)
end

defp do_report_event(%Event{
id: id,
time: time,
datetime: datetime,
kind: :throw,
reason: reason,
stacktrace: stacktrace
}) do
add_error(id, time, :throw, reason, stacktrace)
add_error(id, datetime, :throw, reason, stacktrace)
end

defp do_report_event(%Event{
id: id,
time: time,
datetime: datetime,
kind: :message,
level: level,
reason: message,
metadata: metadata
}) do
add(%{
id: id,
time: time,
datetime: datetime,
level: level,
kind: nil,
reason: message,
Expand All @@ -73,10 +80,10 @@ defmodule Tower.EphemeralReporter do
Agent.get(__MODULE__, & &1)
end

defp add_error(id, time, kind, reason, stacktrace, metadata \\ %{}) do
defp add_error(id, datetime, kind, reason, stacktrace, metadata \\ %{}) do
add(%{
id: id,
time: time,
datetime: datetime,
level: :error,
kind: kind,
reason: reason,
Expand Down
26 changes: 19 additions & 7 deletions lib/tower/event.ex
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
defmodule Tower.Event do
defstruct [:id, :time, :level, :kind, :reason, :stacktrace, :log_event, :metadata]
defstruct [:id, :datetime, :level, :kind, :reason, :stacktrace, :log_event, :metadata]

@type error_kind :: :error | :exit | :throw
@type non_error_kind :: :message
@type reason :: Exception.t() | term()

@type t :: %__MODULE__{
id: Uniq.UUID.t(),
time: :logger.timestamp(),
datetime: DateTime.t(),
level: :logger.level(),
kind: error_kind() | non_error_kind(),
reason: reason(),
Expand All @@ -16,6 +16,8 @@ defmodule Tower.Event do
metadata: map()
}

@logger_time_unit :microsecond

@spec from_caught(Exception.kind(), reason(), Exception.stacktrace()) :: t()
@spec from_caught(Exception.kind(), reason(), Exception.stacktrace(), Keyword.t()) :: t()
def from_caught(kind, reason, stacktrace, options \\ [])
Expand Down Expand Up @@ -44,7 +46,7 @@ defmodule Tower.Event do

%__MODULE__{
id: new_id(),
time: log_event[:meta][:time] || now(),
datetime: event_datetime(log_event),
level: :error,
kind: :error,
reason: exception,
Expand All @@ -61,7 +63,7 @@ defmodule Tower.Event do

%__MODULE__{
id: new_id(),
time: log_event[:meta][:time] || now(),
datetime: event_datetime(log_event),
level: :error,
kind: :exit,
reason: reason,
Expand All @@ -78,7 +80,7 @@ defmodule Tower.Event do

%__MODULE__{
id: new_id(),
time: log_event[:meta][:time] || now(),
datetime: event_datetime(log_event),
level: :error,
kind: :throw,
reason: reason,
Expand All @@ -95,7 +97,7 @@ defmodule Tower.Event do

%__MODULE__{
id: new_id(),
time: log_event[:meta][:time] || now(),
datetime: event_datetime(log_event),
level: level,
kind: :message,
reason: message,
Expand All @@ -104,7 +106,17 @@ defmodule Tower.Event do
}
end

defp now do
defp event_datetime(log_event) do
log_event
|> event_timestamp()
|> DateTime.from_unix!(@logger_time_unit)
end

defp event_timestamp(%{meta: %{time: log_event_time}}) do
log_event_time
end

defp event_timestamp(_) do
:logger.timestamp()
end

Expand Down
Loading

0 comments on commit 68106b8

Please sign in to comment.