diff --git a/logging/collector.go b/logging/collector.go index 5e535c0..3159343 100644 --- a/logging/collector.go +++ b/logging/collector.go @@ -5,7 +5,9 @@ import ( "encoding/base64" "encoding/json" "fmt" + "log" "net/http" + "net/http/httputil" "sync" ) @@ -40,6 +42,9 @@ func (c *Collector) CollectAndSend(record HTTPRecord) error { if len(c.records) >= c.maxSize { if err := c.Send(); err != nil { + if CollectorVerbose > 0 { + log.Println("ERROR: collector fails to send record to MONIT with", err) + } return err } // Reset the list after sending @@ -64,6 +69,14 @@ func (c *Collector) Send() error { if err != nil { return fmt.Errorf("failed to create HTTP request: %w", err) } + if CollectorVerbose > 2 { + reqDump, err := httputil.DumpRequestOut(req, true) + if err == nil { + log.Println("collector request dump", string(reqDump)) + } else { + log.Println("ERROR: fail to perform dump of HTTP request, error:", err) + } + } // Set the content type and authorization headers req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", c.authHeader) @@ -72,6 +85,14 @@ func (c *Collector) Send() error { if err != nil { return fmt.Errorf("failed to send HTTP request: %w", err) } + if CollectorVerbose > 2 { + respDump, err := httputil.DumpResponse(resp, true) + if err == nil { + log.Println("collector response dump", string(respDump)) + } else { + log.Println("ERROR: fail to perform dump of HTTP response, error:", err) + } + } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { diff --git a/logging/logging.go b/logging/logging.go index 9f066f8..982fdac 100644 --- a/logging/logging.go +++ b/logging/logging.go @@ -45,6 +45,9 @@ var CollectorLogin string // CollectorPassword var CollectorPassword string +// CollectorVerbose +var CollectorVerbose int + // LogCollector pointer var LogCollector *Collector @@ -381,12 +384,19 @@ func LogRequest(w http.ResponseWriter, r *http.Request, start time.Time, cauth s } if LogCollector != nil { err = LogCollector.CollectAndSend(hr) + if err == nil { + if CollectorVerbose > 0 { + log.Println("collector successfully send", CollectorSize, "records to MONIT") + } + } else { + log.Println("ERROR: unable to send collector log records, error:", err) + } } else { data, err := json.Marshal(hr) if err == nil { fmt.Println(string(data)) } else { - log.Println("unable to produce record for MONIT, error", err) + log.Println("ERROR: unable to produce record for MONIT, error", err) } } }