@@ -271,17 +271,18 @@ func formatGrafanaStatsFields(r *http.Request) []interface{} {
271271
272272// reportSlowQuery reports slow queries.
273273func (f * Handler ) reportSlowQuery (r * http.Request , queryString url.Values , queryResponseTime time.Duration ) {
274- logMessage := append ( []interface {}{
274+ logMessage := []interface {}{
275275 "msg" , "slow query detected" ,
276276 "method" , r .Method ,
277277 "host" , r .Host ,
278278 "path" , r .URL .Path ,
279279 "time_taken" , queryResponseTime .String (),
280- }, formatQueryString ( queryString ) ... )
280+ }
281281 grafanaFields := formatGrafanaStatsFields (r )
282282 if len (grafanaFields ) > 0 {
283283 logMessage = append (logMessage , grafanaFields ... )
284284 }
285+ logMessage = append (logMessage , formatQueryString (queryString )... )
285286
286287 level .Info (util_log .WithContext (r .Context (), f .log )).Log (logMessage ... )
287288}
@@ -327,7 +328,6 @@ func (f *Handler) reportQueryStats(r *http.Request, userID string, queryString u
327328 "response_size" , contentLength ,
328329 }, stats .LoadExtraFields ()... )
329330
330- logMessage = append (logMessage , formatQueryString (queryString )... )
331331 grafanaFields := formatGrafanaStatsFields (r )
332332 if len (grafanaFields ) > 0 {
333333 logMessage = append (logMessage , grafanaFields ... )
@@ -351,6 +351,9 @@ func (f *Handler) reportQueryStats(r *http.Request, userID string, queryString u
351351 } else {
352352 logMessage = append (logMessage , "error" , s .Message ())
353353 }
354+ }
355+ logMessage = append (logMessage , formatQueryString (queryString )... )
356+ if error != nil {
354357 level .Error (util_log .WithContext (r .Context (), f .log )).Log (logMessage ... )
355358 } else {
356359 level .Info (util_log .WithContext (r .Context (), f .log )).Log (logMessage ... )
@@ -404,9 +407,18 @@ func (f *Handler) parseRequestQueryString(r *http.Request, bodyBuf bytes.Buffer)
404407}
405408
406409func formatQueryString (queryString url.Values ) (fields []interface {}) {
410+ var queryFields []string
407411 for k , v := range queryString {
412+ // If `query` or `match[]` field exists, we always put it as the last field.
413+ if k == "query" || k == "match[]" {
414+ queryFields = []string {fmt .Sprintf ("param_%s" , k ), strings .Join (v , "," )}
415+ continue
416+ }
408417 fields = append (fields , fmt .Sprintf ("param_%s" , k ), strings .Join (v , "," ))
409418 }
419+ if len (queryFields ) > 0 {
420+ fields = append (fields , queryFields )
421+ }
410422 return fields
411423}
412424
0 commit comments