ADD: added dockerfiles and a logger for the backend
This commit is contained in:
46
backend/internal/logger/logger.go
Normal file
46
backend/internal/logger/logger.go
Normal file
@@ -0,0 +1,46 @@
|
||||
// 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)
|
||||
}
|
||||
Reference in New Issue
Block a user