@@ -86,7 +86,9 @@ impl<'q> QueryLogger<'q> {
86
86
pub fn finish ( & self ) {
87
87
let elapsed = self . start . elapsed ( ) ;
88
88
89
- let lvl = if elapsed >= self . settings . slow_statements_duration {
89
+ let was_slow = elapsed >= self . settings . slow_statements_duration ;
90
+
91
+ let lvl = if was_slow {
90
92
self . settings . slow_statements_level
91
93
} else {
92
94
self . settings . statements_level
@@ -114,15 +116,32 @@ impl<'q> QueryLogger<'q> {
114
116
String :: new ( )
115
117
} ;
116
118
117
- private_tracing_dynamic_event ! (
118
- target: "sqlx::query" ,
119
- tracing_level,
120
- summary,
121
- db. statement = sql,
122
- rows_affected = self . rows_affected,
123
- rows_returned= self . rows_returned,
124
- ?elapsed,
125
- ) ;
119
+ if was_slow {
120
+ private_tracing_dynamic_event ! (
121
+ target: "sqlx::query" ,
122
+ tracing_level,
123
+ summary,
124
+ db. statement = sql,
125
+ rows_affected = self . rows_affected,
126
+ rows_returned = self . rows_returned,
127
+ ?elapsed,
128
+ // When logging to JSON, one can trigger alerts from the presence of this field.
129
+ slow_threshold=?self . settings. slow_statements_duration,
130
+ // Make sure to use "slow" in the message as that's likely
131
+ // what people will grep for.
132
+ "slow statement: execution time exceeded alert threshold"
133
+ ) ;
134
+ } else {
135
+ private_tracing_dynamic_event ! (
136
+ target: "sqlx::query" ,
137
+ tracing_level,
138
+ summary,
139
+ db. statement = sql,
140
+ rows_affected = self . rows_affected,
141
+ rows_returned = self . rows_returned,
142
+ ?elapsed,
143
+ ) ;
144
+ }
126
145
}
127
146
}
128
147
}
0 commit comments