Files
Studia/backend/internal/logger/logger.go

47 lines
1016 B
Go

// internal/logger/logger.go
package logger
import (
"io"
"os"
"time"
"github.com/rs/zerolog"
)
var Log zerolog.Logger
// Init initializes the global logger.
// It configures console output, timestamps, and log level from environment.
func Init() {
// Determine output writer
consoleWriter := zerolog.ConsoleWriter{
Out: os.Stdout,
TimeFormat: time.RFC3339,
}
// You can switch to JSON output by replacing with os.Stdout directly:
// writer := os.Stdout
// Create the global logger
Log = zerolog.New(consoleWriter).
Level(zerolog.TraceLevel).With().Caller().Logger().
With().
Timestamp().
Logger()
// Set log level from environment variable, default to InfoLevel
level := zerolog.InfoLevel
if lvlStr, ok := os.LookupEnv("LOG_LEVEL"); ok {
if parsedLevel, err := zerolog.ParseLevel(lvlStr); err == nil {
level = parsedLevel
}
}
zerolog.SetGlobalLevel(level)
}
// SetOutput allows changing output (e.g., to a file)
func SetOutput(w io.Writer) {
Log = Log.Output(w)
}