mirror of
https://github.com/lukaszraczylo/go-simple-graphql.git
synced 2026-10-14 00:58:32 +00:00
73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
package logging
|
|
|
|
import (
|
|
"fmt"
|
|
stdlog "log"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
type LogConfig struct {
|
|
DefaultOutput *os.File
|
|
Logger zerolog.Logger
|
|
}
|
|
|
|
func NewLogger() *LogConfig {
|
|
log := new(LogConfig)
|
|
dll := os.Getenv("LOG_LEVEL")
|
|
if dll == "debug" {
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
} else if dll == "warn" {
|
|
zerolog.SetGlobalLevel(zerolog.WarnLevel)
|
|
} else if dll == "error" {
|
|
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
|
|
} else {
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
|
}
|
|
zerolog.TimeFieldFormat = time.RFC3339
|
|
zerolog.MessageFieldName = "short_message"
|
|
zerolog.TimestampFieldName = "timestamp"
|
|
zerolog.LevelFatalValue = "critical"
|
|
log.Logger = log.Logger.With().Timestamp().Logger()
|
|
stdlog.SetFlags(0)
|
|
stdlog.SetOutput(log.Logger)
|
|
return log
|
|
}
|
|
|
|
func (l *LogConfig) Log(level zerolog.Level, message string, v ...map[string]interface{}) {
|
|
contextLog := l.Logger.WithLevel(level)
|
|
if len(v) > 0 {
|
|
for _, m := range v {
|
|
for k, v := range m {
|
|
if v != nil && k != "" {
|
|
contextLog.Str(k, fmt.Sprintf("%v", v))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// contextLog.Str("_stack_trace", pandati.Trace())
|
|
contextLog.Msg(message)
|
|
}
|
|
|
|
func (l *LogConfig) Critical(message string, v ...map[string]interface{}) {
|
|
l.Log(zerolog.FatalLevel, message, v...)
|
|
}
|
|
|
|
func (l *LogConfig) Error(message string, v ...map[string]interface{}) {
|
|
l.Log(zerolog.ErrorLevel, message, v...)
|
|
}
|
|
|
|
func (l *LogConfig) Warning(message string, v ...map[string]interface{}) {
|
|
l.Log(zerolog.WarnLevel, message, v...)
|
|
}
|
|
|
|
func (l *LogConfig) Info(message string, v ...map[string]interface{}) {
|
|
l.Log(zerolog.InfoLevel, message, v...)
|
|
}
|
|
|
|
func (l *LogConfig) Debug(message string, v ...map[string]interface{}) {
|
|
l.Log(zerolog.DebugLevel, message, v...)
|
|
}
|