Skip to content

Commit

Permalink
logger enhancement (#242)
Browse files Browse the repository at this point in the history
* add handle logger as child logger of trigger

* change logger name to category.type.name.   such as: contrib.activity.log

* lower case trigger name

* change to correct logger
  • Loading branch information
lixingwang authored Dec 9, 2020
1 parent d0ed3d0 commit 9c6d104
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 25 deletions.
6 changes: 1 addition & 5 deletions activity/legacy.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package activity

import (
"fmt"
"path"

"github.com/project-flogo/core/support/log"
)

Expand Down Expand Up @@ -46,9 +44,7 @@ func LegacyRegister(ref string, activity Activity) error {
hasLegacy = true
activities[ref] = activity
legacyTracker[ref] = empty
name := path.Base(ref) //todo should probably get this from the descriptor? or on registration provide a short name
activityLoggers[ref] = log.ChildLogger(activityLogger, name)

activityLoggers[ref] = log.CreateLoggerFromRef(rootLogger, "activity", ref)
return nil
}

Expand Down
9 changes: 3 additions & 6 deletions activity/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package activity

import (
"fmt"
"path"

"github.com/project-flogo/core/support"
"github.com/project-flogo/core/support/log"
)
Expand All @@ -14,7 +12,7 @@ var (
activityLoggers = make(map[string]log.Logger)
)

var activityLogger = log.ChildLogger(log.RootLogger(), "activity")
var rootLogger = log.RootLogger()

func Register(activity Activity, f ...Factory) error {

Expand All @@ -29,10 +27,9 @@ func Register(activity Activity, f ...Factory) error {
}

log.RootLogger().Debugf("Registering activity: %s", ref)

activities[ref] = activity
name := path.Base(ref) //todo should we use this or the alias?
activityLoggers[ref] = log.ChildLogger(activityLogger, name)

activityLoggers[ref] = log.CreateLoggerFromRef(rootLogger, "activity", ref)

if len(f) > 1 {
log.RootLogger().Warnf("Only one factory can be associated with activity: %s", ref)
Expand Down
2 changes: 1 addition & 1 deletion app/instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func (a *App) createTriggers(tConfigs []*trigger.Config, runner action.Runner) (
}
}

handler, err := trigger.NewHandler(hConfig, acts, mapperFactory, expressionFactory, runner)
handler, err := trigger.NewHandler(hConfig, acts, mapperFactory, expressionFactory, runner, logger)
if err != nil {
return nil, fmt.Errorf("error creating handler [%s] in trigger [%s]:%s", hConfig.Name, tConfig.Id, err.Error())
}
Expand Down
21 changes: 21 additions & 0 deletions support/log/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package log

import (
"os"
"path/filepath"
"strings"
)

Expand Down Expand Up @@ -97,6 +98,26 @@ func ChildLoggerWithFields(logger Logger, fields ...Field) Logger {
return childLogger
}

func CreateLoggerFromRef(logger Logger, contributionType, ref string) Logger {
ref = strings.TrimSpace(ref)
if strings.HasSuffix(ref, "/") {
ref = ref[:len(ref)-1]
}
dirs := strings.Split(ref, "/")
if len(dirs) >= 3 {
name := dirs[len(dirs)-1]
acType := dirs[len(dirs)-2]
if acType == "activity" || acType == "trigger" || acType == "connector" {
categoryName := dirs[len(dirs)-3]
return ChildLogger(logger, strings.ToLower(categoryName+"."+acType+"."+name))
} else {
return ChildLogger(logger, strings.ToLower(acType+"."+contributionType+"."+name))
}
} else {
return ChildLogger(logger, strings.ToLower(contributionType+"."+filepath.Base(ref)))
}
}

func Sync() {
zapSync(rootLogger)
}
Expand Down
2 changes: 1 addition & 1 deletion support/test/trigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func InitTrigger(factory trigger.Factory, tConfig *trigger.Config, actions map[s

acts = append(acts, act)

handler, _ := trigger.NewHandler(hConfig, acts, mf, ef, r)
handler, _ := trigger.NewHandler(hConfig, acts, mf, ef, r, logger)

initCtx.handlers = append(initCtx.handlers, handler)

Expand Down
1 change: 1 addition & 0 deletions trigger/deprecated.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func LegacyRegister(ref string, f Factory) error {
}

log.RootLogger().Debugf("Registering legacy trigger [ %s ]", ref)
triggerLoggers[ref] = log.CreateLoggerFromRef(rootLogger, "trigger", ref)

triggerFactories[ref] = f

Expand Down
10 changes: 8 additions & 2 deletions trigger/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ var handlerLog = log.ChildLogger(log.RootLogger(), "handler")

type Handler interface {
Name() string
Logger() log.Logger
Settings() map[string]interface{}
Schemas() *SchemaConfig
Handle(ctx context.Context, triggerData interface{}) (map[string]interface{}, error)
Expand All @@ -33,6 +34,7 @@ type actImpl struct {

type handlerImpl struct {
runner action.Runner
logger log.Logger
config *HandlerConfig
acts []actImpl
eventData map[string]string
Expand All @@ -50,17 +52,21 @@ func (h *handlerImpl) Settings() map[string]interface{} {
return h.config.Settings
}

func (h *handlerImpl) Logger() log.Logger {
return h.logger
}

func (h *handlerImpl) SetDefaultEventData(data map[string]string) {
h.eventData = data
}

func NewHandler(config *HandlerConfig, acts []action.Action, mf mapper.Factory, ef expression.Factory, runner action.Runner) (Handler, error) {
func NewHandler(config *HandlerConfig, acts []action.Action, mf mapper.Factory, ef expression.Factory, runner action.Runner, logger log.Logger) (Handler, error) {

if len(acts) == 0 {
return nil, errors.New("no action specified for handler")
}

handler := &handlerImpl{config: config, acts: make([]actImpl, len(acts)), runner: runner}
handler := &handlerImpl{config: config, acts: make([]actImpl, len(acts)), runner: runner, logger: log.ChildLogger(logger, config.Name)}

var err error

Expand Down
7 changes: 4 additions & 3 deletions trigger/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package trigger

import (
"context"
"github.com/project-flogo/core/support/log"
"testing"

"github.com/project-flogo/core/action"
Expand Down Expand Up @@ -43,17 +44,17 @@ func TestNewHandler(t *testing.T) {
expf := expression.NewFactory(defResolver)

//Action not specified
handler, err := NewHandler(hCfg, nil, mf, expf, runner.NewDirect())
handler, err := NewHandler(hCfg, nil, mf, expf, runner.NewDirect(), log.RootLogger())
assert.NotNil(t, err, "Actions not specified.")

//Parent not defined in the Handler Config
handler, err = NewHandler(hCfg, []action.Action{&MockAction{}}, mf, expf, runner.NewDirect())
handler, err = NewHandler(hCfg, []action.Action{&MockAction{}}, mf, expf, runner.NewDirect(), log.RootLogger())
_, err = handler.Handle(context.Background(), map[string]interface{}{"anInput": "input"})
assert.NotNil(t, err, "Parent not defined.")

//Parent defined.
hCfg.parent = &Config{Id: "sampleTrig"}
handler, err = NewHandler(hCfg, []action.Action{&MockAction{}}, mf, expf, runner.NewDirect())
handler, err = NewHandler(hCfg, []action.Action{&MockAction{}}, mf, expf, runner.NewDirect(), log.RootLogger())
assert.Nil(t, err)
assert.NotNil(t, handler)

Expand Down
10 changes: 3 additions & 7 deletions trigger/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,16 @@ package trigger

import (
"fmt"
"github.com/project-flogo/core/support/log"
"path"

"github.com/project-flogo/core/support"
"github.com/project-flogo/core/support/log"
)

var (
triggerFactories = make(map[string]Factory)
triggerLoggers = make(map[string]log.Logger)
)

var triggerLogger = log.ChildLogger(log.RootLogger(), "trigger")
var rootLogger = log.RootLogger()

func Register(trigger Trigger, f Factory) error {

Expand All @@ -35,9 +33,7 @@ func Register(trigger Trigger, f Factory) error {

triggerFactories[ref] = f

triggerName := path.Base(ref) //todo get this from the descriptor or register trigger with name as well
triggerLoggers[ref] = log.ChildLogger(triggerLogger, triggerName)

triggerLoggers[ref] = log.CreateLoggerFromRef(rootLogger, "trigger", ref)
return nil
}

Expand Down

0 comments on commit 9c6d104

Please sign in to comment.