Select Git revision
encryption.go
-
Cornel Rautenbach authoredCornel Rautenbach authored
logger.go 6.15 KiB
package logger
import (
"bytes"
"encoding/json"
"fmt"
"io"
"strings"
"time"
"github.com/fatih/color"
"gitlab.com/uafrica/go-utils/errors"
)
type ILogger interface {
Fatalf(format string, args ...interface{})
Fatal(args ...interface{})
Errorf(format string, args ...interface{})
Error(args ...interface{})
Warnf(format string, args ...interface{})
Warn(args ...interface{})
Infof(format string, args ...interface{})
Info(args ...interface{})
Debugf(format string, args ...interface{})
Debug(args ...interface{})
}
type Logger struct {
//apiRequest *events.APIGatewayProxyRequest
//currentRequestID *string
level Level
writer io.Writer
data map[string]interface{}
}
func (l Logger) WithFields(data map[string]interface{}) Logger {
newLogger := Logger{
level: l.level,
writer: l.writer,
data: map[string]interface{}{},
}
for n, v := range l.data {
newLogger.data[n] = v
}
for n, v := range data {
newLogger.data[n] = v
}
return newLogger
}
func (l Logger) Fatalf(format string, args ...interface{}) {
l.WithFields(map[string]interface{}{"call_stack": errors.Stack(3)}).log(LevelFatal, 1, fmt.Sprintf(format, args...))
}
func (l Logger) Fatal(args ...interface{}) {
l.WithFields(map[string]interface{}{"call_stack": errors.Stack(3)}).log(LevelFatal, 1, fmt.Sprint(args...))
}
func (l Logger) Errorf(format string, args ...interface{}) {
l.log(LevelError, 1, fmt.Sprintf(format, args...))
}
func (l Logger) Error(args ...interface{}) {
l.log(LevelError, 1, fmt.Sprint(args...))
}
func (l Logger) Warnf(format string, args ...interface{}) {
l.log(LevelWarn, 1, fmt.Sprintf(format, args...))
}