@@ -31,31 +31,41 @@ defmodule ErrorTracker.Telemetry do
3131 Each event is emitted with some measures and metadata, which can be used to
3232 receive information without having to query the database again:
3333
34- | event | measures | metadata |
35- | --------------------------------------- | -------------- | ----------------------------------|
36- | `[:error_tracker, :error, :new]` | `:system_time` | `:error` |
37- | `[:error_tracker, :error, :unresolved]` | `:system_time` | `:error` |
38- | `[:error_tracker, :error, :resolved]` | `:system_time` | `:error` |
39- | `[:error_tracker, :occurrence, :new]` | `:system_time` | `:occurrence`, `:error`, `:muted` |
34+ | event | measures | metadata |
35+ | --------------------------------------- | -------------- | ----------------------------------------------- |
36+ | `[:error_tracker, :error, :new]` | `:system_time` | `:error`, `:occurrence` |
37+ | `[:error_tracker, :error, :unresolved]` | `:system_time` | `:error`, `:occurrence` (nullable) |
38+ | `[:error_tracker, :error, :resolved]` | `:system_time` | `:error` |
39+ | `[:error_tracker, :occurrence, :new]` | `:system_time` | `:occurrence`, `:error`, `:muted` |
4040
4141 The metadata keys contain the following data:
4242
4343 * `:error` - An `%ErrorTracker.Error{}` struct representing the error.
4444 * `:occurrence` - An `%ErrorTracker.Occurrence{}` struct representing the occurrence.
45+ For `:new` error events this is the first occurrence. For `:unresolved` events this
46+ is the occurrence that triggered the state change, or `nil` when the error was manually
47+ unresolved from the UI.
4548 * `:muted` - A boolean indicating whether the error is muted or not.
4649 """
4750
4851 @ doc false
49- def new_error ( % ErrorTracker.Error { } = error ) do
52+ def new_error ( % ErrorTracker.Error { } = error , % ErrorTracker.Occurrence { } = occurrence ) do
5053 measurements = % { system_time: System . system_time ( ) }
51- metadata = % { error: error }
54+ metadata = % { error: error , occurrence: occurrence }
5255 :telemetry . execute ( [ :error_tracker , :error , :new ] , measurements , metadata )
5356 end
5457
5558 @ doc false
5659 def unresolved_error ( % ErrorTracker.Error { } = error ) do
5760 measurements = % { system_time: System . system_time ( ) }
58- metadata = % { error: error }
61+ metadata = % { error: error , occurrence: nil }
62+ :telemetry . execute ( [ :error_tracker , :error , :unresolved ] , measurements , metadata )
63+ end
64+
65+ @ doc false
66+ def previously_resolved_error ( % ErrorTracker.Error { } = error , % ErrorTracker.Occurrence { } = occurrence ) do
67+ measurements = % { system_time: System . system_time ( ) }
68+ metadata = % { error: error , occurrence: occurrence }
5969 :telemetry . execute ( [ :error_tracker , :error , :unresolved ] , measurements , metadata )
6070 end
6171
0 commit comments