Skip to content

Commit 485e246

Browse files
YuanCMichael Ng
authored andcommitted
feat(log): Add loglevel to default logger message (#60)
1 parent e5fe7fb commit 485e246

File tree

4 files changed

+23
-17
lines changed

4 files changed

+23
-17
lines changed

optimizely/logging/interface.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package logging
22

33
// OptimizelyLogConsumer consumes log messages produced by the log producers
44
type OptimizelyLogConsumer interface {
5-
Log(level int, message string)
6-
SetLogLevel(logLevel int)
5+
Log(level LogLevel, message string)
6+
SetLogLevel(logLevel LogLevel)
77
}
88

99
// OptimizelyLogProducer produces log messages to be consumed by the log consumer

optimizely/logging/level_log_consumer.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@ import (
77

88
// FilteredLevelLogConsumer is an implementation of the OptimizelyLogConsumer that filters by log level
99
type FilteredLevelLogConsumer struct {
10-
level int
10+
level LogLevel
1111
logger *log.Logger
1212
}
1313

1414
// Log logs the message if it's log level is higher than or equal to the logger's set level
15-
func (l *FilteredLevelLogConsumer) Log(level int, message string) {
15+
func (l *FilteredLevelLogConsumer) Log(level LogLevel, message string) {
1616
if l.level <= level {
1717
l.logger.Println(message)
1818
}
1919
}
2020

2121
// SetLogLevel changes the log level to the given level
22-
func (l *FilteredLevelLogConsumer) SetLogLevel(level int) {
22+
func (l *FilteredLevelLogConsumer) SetLogLevel(level LogLevel) {
2323
l.level = level
2424
}
2525

2626
// NewStdoutFilteredLevelLogConsumer returns a new logger that logs to stdout
27-
func NewStdoutFilteredLevelLogConsumer(level int) *FilteredLevelLogConsumer {
27+
func NewStdoutFilteredLevelLogConsumer(level LogLevel) *FilteredLevelLogConsumer {
2828
return &FilteredLevelLogConsumer{
2929
level: level,
3030
logger: log.New(os.Stdout, "[Optimizely]", log.LstdFlags),

optimizely/logging/logger.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@ package logging
22

33
import "fmt"
44

5+
// LogLevel represents the level of the log (i.e. Debug, Info, Warning, Error)
6+
type LogLevel int
7+
8+
func (l LogLevel) String() string {
9+
return [...]string{"", "Debug", "Info", "Warning", "Error"}[l]
10+
}
11+
512
var defaultLogConsumer OptimizelyLogConsumer
613

714
const (
8-
_ = iota
9-
1015
// LogLevelDebug log level
11-
LogLevelDebug
16+
LogLevelDebug LogLevel = iota + 1
1217

1318
// LogLevelInfo log level
1419
LogLevelInfo
@@ -30,7 +35,7 @@ func SetLogger(logger OptimizelyLogConsumer) {
3035
}
3136

3237
// SetLogLevel sets the log level to the given level
33-
func SetLogLevel(logLevel int) {
38+
func SetLogLevel(logLevel LogLevel) {
3439
defaultLogConsumer.SetLogLevel(logLevel)
3540
}
3641

@@ -69,8 +74,9 @@ func (p NamedLogProducer) Error(message string, err interface{}) {
6974
p.log(LogLevelError, message)
7075
}
7176

72-
func (p NamedLogProducer) log(logLevel int, message string) {
73-
// prepends the name to the message
74-
message = fmt.Sprintf("[%s] %s", p.name, message)
77+
func (p NamedLogProducer) log(logLevel LogLevel, message string) {
78+
79+
// prepends the name and log level to the message
80+
message = fmt.Sprintf("[%s][%s] %s", p.name, logLevel, message)
7581
defaultLogConsumer.Log(logLevel, message)
7682
}

optimizely/logging/logger_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ type MockOptimizelyLogger struct {
1414
loggedMessages []string
1515
}
1616

17-
func (m *MockOptimizelyLogger) Log(level int, message string) {
17+
func (m *MockOptimizelyLogger) Log(level LogLevel, message string) {
1818
m.Called(level, message)
1919
m.loggedMessages = append(m.loggedMessages, message)
2020
}
2121

22-
func (m *MockOptimizelyLogger) SetLogLevel(level int) {
22+
func (m *MockOptimizelyLogger) SetLogLevel(level LogLevel) {
2323
m.Called(level)
2424
}
2525

2626
func TestNamedLoggerInfo(t *testing.T) {
2727
testLogMessage := "Test info message"
28-
expectedLogMessage := "[test-info] Test info message"
28+
expectedLogMessage := "[test-info][Info] Test info message"
2929
testLogger := new(MockOptimizelyLogger)
3030
testLogger.On("Log", LogLevelInfo, expectedLogMessage)
3131

@@ -39,7 +39,7 @@ func TestNamedLoggerInfo(t *testing.T) {
3939

4040
func TestNamedLoggerError(t *testing.T) {
4141
testLogMessage := "Test error message"
42-
expectedLogMessage := "[test-error] Test error message I am an error object"
42+
expectedLogMessage := "[test-error][Error] Test error message I am an error object"
4343
testLogger := new(MockOptimizelyLogger)
4444
testLogger.On("Log", LogLevelError, expectedLogMessage)
4545
SetLogger(testLogger)

0 commit comments

Comments
 (0)