mirror of
https://github.com/lukaszraczylo/gohoarder.git
synced 2026-06-30 03:14:47 +00:00
fixes
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
// Config contains logger configuration
|
||||
type Config struct {
|
||||
Level string // debug, info, warn, error
|
||||
Format string // json, pretty
|
||||
}
|
||||
|
||||
// Init initializes the global logger
|
||||
func Init(cfg Config) error {
|
||||
// Set log level
|
||||
level, err := zerolog.ParseLevel(cfg.Level)
|
||||
if err != nil {
|
||||
level = zerolog.InfoLevel
|
||||
}
|
||||
zerolog.SetGlobalLevel(level)
|
||||
|
||||
// Set time format
|
||||
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
|
||||
|
||||
// Set format
|
||||
if cfg.Format == "pretty" {
|
||||
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: "15:04:05.000"})
|
||||
} else {
|
||||
// JSON format (default for production)
|
||||
log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Get returns the global logger
|
||||
func Get() *zerolog.Logger {
|
||||
return &log.Logger
|
||||
}
|
||||
|
||||
// WithFields returns a logger with additional fields
|
||||
func WithFields(fields map[string]interface{}) *zerolog.Logger {
|
||||
logger := log.Logger
|
||||
for k, v := range fields {
|
||||
logger = logger.With().Interface(k, v).Logger()
|
||||
}
|
||||
return &logger
|
||||
}
|
||||
|
||||
// WithRequestID returns a logger with request ID
|
||||
func WithRequestID(requestID string) *zerolog.Logger {
|
||||
logger := log.With().Str("request_id", requestID).Logger()
|
||||
return &logger
|
||||
}
|
||||
Reference in New Issue
Block a user