Skip to content

Commit

Permalink
more
Browse files Browse the repository at this point in the history
  • Loading branch information
grzuy committed Aug 23, 2024
1 parent f40870a commit 7344a4f
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
26 changes: 26 additions & 0 deletions lib/tower/ephemeral_reporter.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,28 @@ defmodule Tower.EphemeralReporter do
A very slim and naive built-in reporter, that just stores Tower events as process state.
Possibly useful for development or testing.
## Example
iex> {:ok, pid} = Tower.EphemeralReporter.start_link([])
iex> Tower.EphemeralReporter.events()
[]
iex> try do
...> 1 / 0
...> catch
...> kind, reason ->
...> Tower.handle_caught(kind, reason, __STACKTRACE__)
...> end
:ok
iex> Process.sleep(200)
:ok
iex> [event] = Tower.EphemeralReporter.events()
iex> event.kind
:error
iex> event.reason
%ArithmeticError{message: "bad argument in arithmetic expression"}
iex> Tower.EphemeralReporter.stop(pid)
:ok
"""
@behaviour Tower.Reporter

Expand All @@ -16,6 +38,10 @@ defmodule Tower.EphemeralReporter do
Agent.start_link(fn -> [] end, name: __MODULE__)
end

def stop(pid) do
Agent.stop(pid)
end

@impl true
def report_event(%Event{level: level} = event) do
if Tower.equal_or_greater_level?(level, @default_level) do
Expand Down
5 changes: 4 additions & 1 deletion lib/tower/reporter.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
defmodule Tower.Reporter do
@moduledoc """
Behaviour that can be used to write Tower reporters.
Behaviour that can be implemented to write Tower reporters.
Tower comes built-in with a very naive `Tower.EphemeralReporter`, that implements
this behavior, which can be useful for development and testing purposes.
"""

@doc """
Expand Down
4 changes: 4 additions & 0 deletions test/tower/ephemeral_reporter_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
defmodule Tower.EphemeralReporterTest do
use ExUnit.Case
doctest Tower.EphemeralReporter
end

0 comments on commit 7344a4f

Please sign in to comment.