Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const (
DATA_SECRET_KEY_DEFAULT = "flogo"
ENV_APP_PROPERTY_OVERRIDE_KEY = "FLOGO_APP_PROPS_OVERRIDE"
ENV_APP_PROPERTY_RESOLVER_KEY = "FLOGO_APP_PROPS_VALUE_RESOLVER"
ENV_LOG_LEVEL_OVERRIDE_KEY = "FLOGO_CONTRIB_LOG_LEVEL_OVERRIDE"
)

var defaultLogLevel = LOG_LEVEL_DEFAULT
Expand Down Expand Up @@ -95,3 +96,11 @@ func GetAppPropertiesValueResolver() string {
}
return ""
}

func GetContribLogLevelOverride() string {
key := os.Getenv(ENV_LOG_LEVEL_OVERRIDE_KEY)
if len(key) > 0 {
return key
}
return ""
}
46 changes: 40 additions & 6 deletions logger/logfactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ import (

"github.com/sirupsen/logrus"
"github.com/TIBCOSoftware/flogo-lib/config"
"strings"
)

var loggerMap = make(map[string]Logger)
var overrideLogLevelMap = make(map[string]Level)
var mutex = &sync.RWMutex{}
var logLevel = InfoLevel
var logFormat = "TEXT"
Expand All @@ -29,6 +31,24 @@ func init() {
logLevel = getLogLevel
}

// Gather overridden log levels
overrideValues := config.GetContribLogLevelOverride()
if overrideValues != "" {
for _, pair := range strings.Split(overrideValues, ",") {
kv := strings.Split(pair, "=")
if len(kv) == 2 && kv[0] != "" && kv[1] != "" {
ll, err := GetLevelForName(kv[1])
if err != nil {
println("'%s' is not valid override value for '%s'. %s", pair, config.ENV_LOG_LEVEL_OVERRIDE_KEY, err.Error())
} else {
overrideLogLevelMap[kv[0]] = ll
}
} else {
println("'%s' is not valid override value for '%s'. It must be in PropName=PropValue format.", pair, config.ENV_LOG_LEVEL_OVERRIDE_KEY)
}
}
}

logFormat = config.GetLogFormat()
}

Expand Down Expand Up @@ -134,15 +154,15 @@ func (l *DefaultLogger) Errorf(format string, args ...interface{}) {
func (l *DefaultLogger) SetLogLevel(logLevel Level) {
switch logLevel {
case DebugLevel:
l.loggerImpl.Level = logrus.DebugLevel
l.loggerImpl.SetLevel(logrus.DebugLevel)
case InfoLevel:
l.loggerImpl.Level = logrus.InfoLevel
l.loggerImpl.SetLevel(logrus.InfoLevel)
case ErrorLevel:
l.loggerImpl.Level = logrus.ErrorLevel
l.loggerImpl.SetLevel(logrus.ErrorLevel)
case WarnLevel:
l.loggerImpl.Level = logrus.WarnLevel
l.loggerImpl.SetLevel(logrus.WarnLevel)
default:
l.loggerImpl.Level = logrus.ErrorLevel
l.loggerImpl.SetLevel(logrus.ErrorLevel)
}
}

Expand All @@ -152,6 +172,20 @@ func (l *DefaultLogger) GetLogLevel() Level {
return level
}

func getLogLevel(loggerName string) Level {
if len(overrideLogLevelMap) > 0 {
// Find overridden log level
for name, loglevel := range overrideLogLevelMap {
// Look for logger which matches given name
if strings.Contains(strings.ToLower(loggerName), strings.ToLower(name)) {
return loglevel
}
}
}
// Return engine log level
return logLevel
}

func (logfactory *DefaultLoggerFactory) GetLogger(name string) Logger {
mutex.RLock()
l := loggerMap[name]
Expand All @@ -172,7 +206,7 @@ func (logfactory *DefaultLoggerFactory) GetLogger(name string) Logger {
loggerImpl: logImpl,
}

l.SetLogLevel(logLevel)
l.SetLogLevel(getLogLevel(name))

mutex.Lock()
loggerMap[name] = l
Expand Down
2 changes: 1 addition & 1 deletion logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func GetLogger(name string) Logger {
func GetLevelForName(name string) (Level, error) {
levelForName, ok := levelNames[name]
if !ok {
return 0, fmt.Errorf("unsupported Log Level '%s'", name)
return 0, fmt.Errorf("unsupported Log Level '%s'. supported values - [DEBUG ERROR INFO WARN]", name)
}
return levelForName, nil
}