Files
Zane Walker 7e940c83a7
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
(Feat): Initial Commit
2026-07-03 19:41:31 +05:30

45 lines
1.4 KiB
Go

// nolint:revive
package util
import (
"context"
"github.com/labstack/echo/v4"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
// LogFromContext returns a request-specific zerolog instance using the provided context.
// The returned logger will have the request ID as well as some other value predefined.
// If no logger is associated with the context provided, the global zerolog instance
// will be returned instead - this function will _always_ return a valid (enabled) logger.
// Should you ever need to force a disabled logger for a context, use `util.DisableLogger(ctx, true)`
// and pass the context returned to other code/`LogFromContext`.
func LogFromContext(ctx context.Context) *zerolog.Logger {
logger := log.Ctx(ctx)
if logger.GetLevel() == zerolog.Disabled {
if ShouldDisableLogger(ctx) {
return logger
}
logger = &log.Logger
}
return logger
}
// LogFromEchoContext returns a request-specific zerolog instance using the echo.Context of the request.
// The returned logger will have the request ID as well as some other value predefined.
func LogFromEchoContext(c echo.Context) *zerolog.Logger {
return LogFromContext(c.Request().Context())
}
func LogLevelFromString(s string) zerolog.Level {
level, err := zerolog.ParseLevel(s)
if err != nil {
log.Error().Err(err).Msgf("Failed to parse log level, defaulting to %s", zerolog.DebugLevel)
return zerolog.DebugLevel
}
return level
}