[feature] Add a request ID and include it in logs (#1476)

This adds a lightweight form of tracing to GTS. Each incoming request is
assigned a Request ID which we then pass on and log in all our log
lines. Any function that gets called downstream from an HTTP handler
should now emit a requestID=value pair whenever it logs something.

Co-authored-by: kim <grufwub@gmail.com>
This commit is contained in:
Daenney 2023-02-17 12:02:29 +01:00 committed by GitHub
commit 68e6d08c76
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
118 changed files with 813 additions and 591 deletions

View file

@ -42,9 +42,9 @@ var Orphaned action.GTSAction = func(ctx context.Context) error {
}
if dry /* dick heyyoooooo */ {
log.Infof("DRY RUN: %d items are orphaned and eligible to be pruned", pruned)
log.Infof(ctx, "DRY RUN: %d items are orphaned and eligible to be pruned", pruned)
} else {
log.Infof("%d orphaned items were pruned", pruned)
log.Infof(ctx, "%d orphaned items were pruned", pruned)
}
return prune.shutdown(ctx)

View file

@ -49,9 +49,9 @@ var Remote action.GTSAction = func(ctx context.Context) error {
total := pruned + uncached
if dry /* dick heyyoooooo */ {
log.Infof("DRY RUN: %d remote items are unused/stale and eligible to be pruned", total)
log.Infof(ctx, "DRY RUN: %d remote items are unused/stale and eligible to be pruned", total)
} else {
log.Infof("%d unused/stale remote items were pruned", pruned)
log.Infof(ctx, "%d unused/stale remote items were pruned", pruned)
}
return prune.shutdown(ctx)

View file

@ -62,7 +62,7 @@ import (
// Start creates and starts a gotosocial server
var Start action.GTSAction = func(ctx context.Context) error {
_, err := maxprocs.Set(maxprocs.Logger(log.Debugf))
_, err := maxprocs.Set(nil)
if err != nil {
return fmt.Errorf("failed to set CPU limits from cgroup: %s", err)
}
@ -156,6 +156,9 @@ var Start action.GTSAction = func(ctx context.Context) error {
// attach global middlewares which are used for every request
router.AttachGlobalMiddleware(
middleware.AddRequestID(config.GetRequestIDHeader()),
// note: hooks adding ctx fields must be ABOVE
// the logger, otherwise won't be accessible.
middleware.Logger(),
middleware.UserAgent(),
middleware.CORS(),
@ -237,13 +240,13 @@ var Start action.GTSAction = func(ctx context.Context) error {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
sig := <-sigs // block until signal received
log.Infof("received signal %s, shutting down", sig)
log.Infof(ctx, "received signal %s, shutting down", sig)
// close down all running services in order
if err := gts.Stop(ctx); err != nil {
return fmt.Errorf("error closing gotosocial service: %s", err)
}
log.Info("done! exiting...")
log.Info(ctx, "done! exiting...")
return nil
}

View file

@ -155,7 +155,7 @@ var Start action.GTSAction = func(ctx context.Context) error {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, os.Interrupt, syscall.SIGTERM)
sig := <-sigs
log.Infof("received signal %s, shutting down", sig)
log.Infof(ctx, "received signal %s, shutting down", sig)
testrig.StandardDBTeardown(dbService)
testrig.StandardStorageTeardown(storageBackend)
@ -165,6 +165,6 @@ var Start action.GTSAction = func(ctx context.Context) error {
return fmt.Errorf("error closing gotosocial service: %s", err)
}
log.Info("done! exiting...")
log.Info(ctx, "done! exiting...")
return nil
}