4
4
use super :: prelude:: * ;
5
5
use crate :: util:: request_header;
6
6
7
- use conduit:: { header, Host , RequestExt , Scheme , StatusCode } ;
7
+ use conduit:: { header, RequestExt , StatusCode } ;
8
8
use conduit_cookie:: RequestSession ;
9
- use sentry:: Level ;
10
9
11
10
use std:: fmt:: { self , Display , Formatter } ;
12
11
use std:: time:: { SystemTime , UNIX_EPOCH } ;
13
12
14
13
const SLOW_REQUEST_THRESHOLD_MS : u64 = 1000 ;
15
14
16
- const FILTERED_HEADERS : & [ & str ] = & [ "Authorization" , "Cookie" , "X-Real-Ip" , "X-Forwarded-For" ] ;
17
-
18
15
#[ derive( Default ) ]
19
16
pub ( super ) struct LogRequests ( ) ;
20
17
@@ -92,28 +89,7 @@ pub fn add_custom_metadata<V: Display>(req: &mut dyn RequestExt, key: &'static s
92
89
}
93
90
94
91
fn report_to_sentry ( req : & dyn RequestExt , res : & AfterResult , response_time : u64 ) {
95
- let ( message, level) = match res {
96
- Err ( e) => ( e. to_string ( ) , Level :: Error ) ,
97
- Ok ( _) => return ,
98
- } ;
99
-
100
- let config = |scope : & mut sentry:: Scope | {
101
- let method = Some ( req. method ( ) . as_str ( ) . to_owned ( ) ) ;
102
-
103
- let scheme = match req. scheme ( ) {
104
- Scheme :: Http => "http" ,
105
- Scheme :: Https => "https" ,
106
- } ;
107
-
108
- let host = match req. host ( ) {
109
- Host :: Name ( name) => name. to_owned ( ) ,
110
- Host :: Socket ( addr) => addr. to_string ( ) ,
111
- } ;
112
-
113
- let path = & req. extensions ( ) . find :: < OriginalPath > ( ) . unwrap ( ) . 0 ;
114
-
115
- let url = format ! ( "{}://{}{}" , scheme, host, path) . parse ( ) . ok ( ) ;
116
-
92
+ sentry:: configure_scope ( |scope| {
117
93
{
118
94
let id = req. session ( ) . get ( "user_id" ) . map ( |str| str. to_string ( ) ) ;
119
95
@@ -125,29 +101,6 @@ fn report_to_sentry(req: &dyn RequestExt, res: &AfterResult, response_time: u64)
125
101
scope. set_user ( Some ( user) ) ;
126
102
}
127
103
128
- {
129
- let headers = req
130
- . headers ( )
131
- . iter ( )
132
- . filter ( |( k, _v) | !FILTERED_HEADERS . iter ( ) . any ( |name| k == name) )
133
- . map ( |( k, v) | ( k. to_string ( ) , v. to_str ( ) . unwrap_or_default ( ) . to_string ( ) ) )
134
- . collect ( ) ;
135
-
136
- let sentry_req = sentry:: protocol:: Request {
137
- url,
138
- method,
139
- headers,
140
- ..Default :: default ( )
141
- } ;
142
-
143
- scope. add_event_processor ( Box :: new ( move |mut event| {
144
- if event. request . is_none ( ) {
145
- event. request = Some ( sentry_req. clone ( ) ) ;
146
- }
147
- Some ( event)
148
- } ) ) ;
149
- }
150
-
151
104
if let Some ( request_id) = req
152
105
. headers ( )
153
106
. get ( "x-request-id" )
@@ -172,9 +125,7 @@ fn report_to_sentry(req: &dyn RequestExt, res: &AfterResult, response_time: u64)
172
125
scope. set_extra ( key, value. to_string ( ) . into ( ) ) ;
173
126
}
174
127
}
175
- } ;
176
-
177
- sentry:: with_scope ( config, || sentry:: capture_message ( & message, level) ) ;
128
+ } ) ;
178
129
}
179
130
180
131
#[ cfg( test) ]
0 commit comments