@@ -26,8 +26,10 @@ defmodule Sentry.Event do
2626 breadcrumbs: [ ]
2727
2828 @ doc """
29- Transforms an Exception to a Sentry event.
29+ Creates an Event struct out of context collected and options
3030 ## Options
31+ * `:exception` - expection
32+ * `:message` - message
3133 * `:stacktrace` - a list of Exception.stacktrace()
3234 * `:extra` - map of extra context
3335 * `:user` - map of user context
@@ -36,37 +38,33 @@ defmodule Sentry.Event do
3638 * `:breadcrumbs` - list of breadcrumbs
3739 * `:level` - error level
3840 """
39- @ spec transform_exception ( Exception . t , Keyword . t ) :: % Event { }
40- def transform_exception ( exception , opts ) do
41+ def create_event ( opts ) do
4142 % { user: user_context ,
42- tags: tags_context ,
43- extra: extra_context ,
44- breadcrumbs: breadcrumbs_context ,
45- request: request_context } = Sentry.Context . get_all ( )
43+ tags: tags_context ,
44+ extra: extra_context ,
45+ breadcrumbs: breadcrumbs_context ,
46+ request: request_context } = Sentry.Context . get_all ( )
47+
48+ exception = Keyword . get ( opts , :exception )
49+
50+ message = Keyword . get ( opts , :message )
4651
4752 stacktrace = Keyword . get ( opts , :stacktrace , [ ] )
4853
4954 extra = extra_context
5055 |> Map . merge ( Keyword . get ( opts , :extra , % { } ) )
5156 user = user_context
52- |> Map . merge ( Keyword . get ( opts , :user , % { } ) )
57+ |> Map . merge ( Keyword . get ( opts , :user , % { } ) )
5358 tags = Application . get_env ( :sentry , :tags , % { } )
54- |> Map . merge ( tags_context )
55- |> Map . merge ( Keyword . get ( opts , :tags , % { } ) )
59+ |> Map . merge ( tags_context )
60+ |> Map . merge ( Keyword . get ( opts , :tags , % { } ) )
5661 request = request_context
5762 |> Map . merge ( Keyword . get ( opts , :request , % { } ) )
5863 breadcrumbs = Keyword . get ( opts , :breadcrumbs , [ ] )
5964 |> Kernel . ++ ( breadcrumbs_context )
6065
6166 level = Keyword . get ( opts , :level , "error" )
6267
63- exception = Exception . normalize ( :error , exception )
64-
65- message = :error
66- |> Exception . format_banner ( exception )
67- |> String . trim ( "*" )
68- |> String . trim
69-
7068 release = Application . get_env ( :sentry , :release )
7169
7270 server_name = Application . get_env ( :sentry , :server_name )
@@ -80,7 +78,7 @@ defmodule Sentry.Event do
8078 platform: "elixir" ,
8179 environment: env ,
8280 server_name: server_name ,
83- exception: [ % { type: exception . __struct__ , value: Exception . message ( exception ) } ] ,
81+ exception: exception ,
8482 stacktrace: % {
8583 frames: stacktrace_to_frames ( stacktrace )
8684 } ,
@@ -89,9 +87,37 @@ defmodule Sentry.Event do
8987 tags: tags ,
9088 user: user ,
9189 breadcrumbs: breadcrumbs ,
90+ request: request
9291 }
9392 |> add_metadata ( )
94- |> Map . put ( :request , request )
93+ end
94+
95+ @ doc """
96+ Transforms an Exception to a Sentry event.
97+ ## Options
98+ * `:stacktrace` - a list of Exception.stacktrace()
99+ * `:extra` - map of extra context
100+ * `:user` - map of user context
101+ * `:tags` - map of tags context
102+ * `:request` - map of request context
103+ * `:breadcrumbs` - list of breadcrumbs
104+ * `:level` - error level
105+ """
106+ @ spec transform_exception ( Exception . t , Keyword . t ) :: % Event { }
107+ def transform_exception ( exception , opts ) do
108+ exception = Exception . normalize ( :error , exception )
109+
110+ message = :error
111+ |> Exception . format_banner ( exception )
112+ |> String . trim ( "*" )
113+ |> String . trim
114+
115+ exception = [ % { type: exception . __struct__ , value: Exception . message ( exception ) } ]
116+
117+ opts
118+ |> Keyword . put ( :exception , exception )
119+ |> Keyword . put ( :message , message )
120+ |> create_event ( )
95121 end
96122
97123 @ spec add_metadata ( % Event { } ) :: % Event { }
0 commit comments