New logging system (#319)

* First pass at adding new logging system

* NewLogger

* NewLogger

* WIP

* silly bug fix

* :D removed files

* removed old logging interface

* added tests

* added tests

* Started to add new lines to all f calls

* Added subsystem log types

* Logger improvements

* Further performance improvements

* changes to logger and sublogger creation

* Renamed Logging types

* removed old print statement

* changes based on feedback

* moved sublogger types to own file

* :)

* added console as output type

* added get level command

* added get/set log level via grpc command

* added check for output being empty for migration support

* first pass at log rotation

* added log rotation

* :D derp fixed

* added tests

* changes based on feedback

* changed log type

* comments

* renamed file -> fileSettings

* typo fix

* changes based on feedback

* gofmt ran on additional files

* gofmt ran on additional files
This commit is contained in:
Andrew
2019-07-07 05:20:31 +10:00
committed by Adrian Gallagher
parent 7112a89491
commit 3de1d94e5f
137 changed files with 2920 additions and 1650 deletions

View File

@@ -281,11 +281,12 @@ func (r *Requester) checkRequest(method, path string, body io.Reader, headers ma
// DoRequest performs a HTTP/HTTPS request with the supplied params
func (r *Requester) DoRequest(req *http.Request, path string, body io.Reader, result interface{}, authRequest, verbose, httpDebug bool) error {
if verbose {
log.Debugf("%s exchange request path: %s requires rate limiter: %v", r.Name, path, r.RequiresRateLimiter())
log.Debugf(log.Global,
"%s exchange request path: %s requires rate limiter: %v", r.Name, path, r.RequiresRateLimiter())
for k, d := range req.Header {
log.Debugf("%s exchange request header [%s]: %s", r.Name, k, d)
log.Debugf(log.Global, "%s exchange request header [%s]: %s", r.Name, k, d)
}
log.Debug(body)
log.Debugln(log.Global, body)
}
var timeoutError error
@@ -294,7 +295,7 @@ func (r *Requester) DoRequest(req *http.Request, path string, body io.Reader, re
if err != nil {
if timeoutErr, ok := err.(net.Error); ok && timeoutErr.Timeout() {
if verbose {
log.Errorf("%s request has timed-out retrying request, count %d",
log.Errorf(log.ExchangeSys, "%s request has timed-out retrying request, count %d",
r.Name,
i)
}
@@ -332,7 +333,7 @@ func (r *Requester) DoRequest(req *http.Request, path string, body io.Reader, re
reader = resp.Body
default:
log.Warnf("%s request response content type differs from JSON; received %v [path: %s]",
log.Warnf(log.ExchangeSys, "%s request response content type differs from JSON; received %v [path: %s]\n",
r.Name, resp.Header.Get("Content-Type"), path)
reader = resp.Body
}
@@ -356,17 +357,17 @@ func (r *Requester) DoRequest(req *http.Request, path string, body io.Reader, re
if httpDebug {
dump, err := httputil.DumpResponse(resp, false)
if err != nil {
log.Errorf("DumpResponse invalid response: %v:", err)
log.Errorf(log.Global, "DumpResponse invalid response: %v:", err)
}
log.Debugf("DumpResponse Headers (%v):\n%s", path, dump)
log.Debugf("DumpResponse Body (%v):\n %s", path, string(contents))
log.Debugf(log.Global, "DumpResponse Headers (%v):\n%s", path, dump)
log.Debugf(log.Global, "DumpResponse Body (%v):\n %s", path, string(contents))
}
resp.Body.Close()
if verbose {
log.Debugf("HTTP status: %s, Code: %v", resp.Status, resp.StatusCode)
log.Debugf(log.ExchangeSys, "HTTP status: %s, Code: %v", resp.Status, resp.StatusCode)
if !httpDebug {
log.Debugf("%s exchange raw response: %s", r.Name, string(contents))
log.Debugf(log.ExchangeSys, "%s exchange raw response: %s", r.Name, string(contents))
}
}
@@ -395,7 +396,7 @@ func (r *Requester) worker() {
limit := r.GetRateLimit(x.AuthRequest)
diff := limit.GetDuration() - time.Since(r.Cycle)
if x.Verbose {
log.Debugf("%s request. Rate limited! Sleeping for %v", r.Name, diff)
log.Debugf(log.ExchangeSys, "%s request. Rate limited! Sleeping for %v", r.Name, diff)
}
time.Sleep(diff)
@@ -407,7 +408,7 @@ func (r *Requester) worker() {
r.IncrementRequests(x.AuthRequest)
if x.Verbose {
log.Debugf("%s request. No longer rate limited! Doing request", r.Name)
log.Debugf(log.ExchangeSys, "%s request. No longer rate limited! Doing request", r.Name)
}
err := r.DoRequest(x.Request, x.Path, x.Body, x.Result, x.AuthRequest, x.Verbose, x.HTTPDebugging)
@@ -452,9 +453,11 @@ func (r *Requester) SendPayload(method, path string, headers map[string]string,
if httpDebugging {
dump, err := httputil.DumpRequestOut(req, true)
if err != nil {
log.Errorf("DumpRequest invalid response %v:", err)
log.Errorf(log.Global,
"DumpRequest invalid response %v:", err)
}
log.Debugf("DumpRequest:\n%s", dump)
log.Debugf(log.Global,
"DumpRequest:\n%s", dump)
}
if !r.RequiresRateLimiter() {
@@ -491,18 +494,18 @@ func (r *Requester) SendPayload(method, path string, headers map[string]string,
}
if verbose {
log.Debugf("%s request. Attaching new job.", r.Name)
log.Debugf(log.ExchangeSys, "%s request. Attaching new job.", r.Name)
}
r.Jobs <- newJob
r.unlock()
if verbose {
log.Debugf("%s request. Waiting for job to complete.", r.Name)
log.Debugf(log.ExchangeSys, "%s request. Waiting for job to complete.", r.Name)
}
resp := <-newJob.JobResult
if verbose {
log.Debugf("%s request. Job complete.", r.Name)
log.Debugf(log.ExchangeSys, "%s request. Job complete.", r.Name)
}
return resp.Error
@@ -563,7 +566,7 @@ func (r *Requester) lock() {
wg.Done()
select {
case <-timer.C:
log.Errorf("Unlocking due to possible error for %s", r.Name)
log.Errorf(log.ExchangeSys, "Unlocking due to possible error for %s", r.Name)
r.fifoLock.Unlock()
case <-r.disengage: