add id to all call invocation logs

This commit is contained in:
Reed Allman
2017-09-07 18:18:32 -07:00
parent c7ebf0d7ba
commit 1d0a63ca99
3 changed files with 13 additions and 2 deletions

View File

@@ -180,6 +180,7 @@ func (a *agent) Submit(callI Call) error {
call := callI.(*call)
ctx := call.req.Context()
span, ctx := opentracing.StartSpanFromContext(ctx, "agent_submit")
defer span.Finish()
@@ -485,8 +486,7 @@ func (s *hotSlot) exec(ctx context.Context, call *call) error {
}
// link the container id and id in the logs [for us!]
// TODO go is broke idk why logrus.Fields doesn't work
common.Logger(ctx).WithField("container_id", s.container.id).WithField("id", call.ID).Info("starting call")
common.Logger(ctx).WithField("container_id", s.container.id).Info("starting call")
// swap in the new id and the new stderr logger
s.container.swap(stderr)

View File

@@ -9,6 +9,7 @@ import (
"strings"
"time"
"github.com/fnproject/fn/api/common"
"github.com/fnproject/fn/api/id"
"github.com/fnproject/fn/api/models"
"github.com/go-openapi/strfmt"
@@ -250,6 +251,10 @@ func (a *agent) GetCall(opts ...CallOpt) (Call, error) {
c.ds = a.ds
c.mq = a.mq
ctx, _ := common.LoggerWithFields(c.req.Context(),
logrus.Fields{"id": c.ID, "app": c.AppName, "route": c.Path})
c.req = c.req.WithContext(ctx)
return &c, nil
}

View File

@@ -10,8 +10,10 @@ import (
"github.com/fnproject/fn/api"
"github.com/fnproject/fn/api/agent"
"github.com/fnproject/fn/api/common"
"github.com/fnproject/fn/api/models"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
)
type runnerResponse struct {
@@ -60,6 +62,10 @@ func (s *Server) serve(c *gin.Context, appName, path string) {
// TODO we could add FireBeforeDispatch right here with Call in hand
model := call.Model()
{ // scope this, to disallow ctx use outside of this scope. add id for handleErrorResponse logger
ctx, _ := common.LoggerWithFields(c.Request.Context(), logrus.Fields{"id": model.ID})
c.Request = c.Request.WithContext(ctx)
}
if model.Type == "async" {
// TODO we should push this into GetCall somehow (CallOpt maybe) or maybe agent.Queue(Call) ?