-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger.go
54 lines (42 loc) · 1.26 KB
/
logger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package logger
import (
"fmt"
"go.uber.org/zap"
)
// Declare variables to store log messages as new Events
var (
invalidArgMessage = Event{1, "Invalid arg: %s"}
invalidArgValueMessage = Event{2, "Invalid value for argument: %s: %v"}
missingArgMessage = Event{3, "Missing arg: %s"}
)
// Logger wraps logger lib
type Logger struct {
*zap.Logger
}
// Event stores messages to log later, from our standard interface
type Event struct {
id int
message string
}
// New returns new instance of Logger
func New() (*Logger, error) {
prodLogger, err := zap.NewProduction()
if err != nil {
return &Logger{}, fmt.Errorf("Cannot initialize logger. Error: %s", err)
}
defer prodLogger.Sync()
var logger = &Logger{prodLogger}
return logger, nil
}
// InvalidArg is a standard error message
func (l *Logger) InvalidArg(argumentName string) {
l.Sugar().Errorf(invalidArgMessage.message, argumentName)
}
// InvalidArgValue is a standard error message
func (l *Logger) InvalidArgValue(argumentName string, argumentValue string) {
l.Sugar().Errorf(invalidArgValueMessage.message, argumentName, argumentValue)
}
// MissingArg is a standard error message
func (l *Logger) MissingArg(argumentName string) {
l.Sugar().Errorf(missingArgMessage.message, argumentName)
}