mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-16 19:05:54 -07:00
chore: initial public commit
This commit is contained in:
commit
fc9054b78c
250 changed files with 32809 additions and 0 deletions
57
internal/logger/logger.go
Normal file
57
internal/logger/logger.go
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"github.com/gabehf/koito/internal/cfg"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
var once sync.Once
|
||||
var logger zerolog.Logger
|
||||
|
||||
// Define a key type to avoid context key collisions
|
||||
type contextKey string
|
||||
|
||||
const loggerKey contextKey = "logger"
|
||||
|
||||
func Get() *zerolog.Logger {
|
||||
once.Do(func() {
|
||||
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
|
||||
|
||||
logLevel := cfg.LogLevel()
|
||||
|
||||
logger = zerolog.New(os.Stdout).
|
||||
Level(zerolog.Level(logLevel)).
|
||||
With().
|
||||
Timestamp().
|
||||
// Caller().
|
||||
Logger()
|
||||
})
|
||||
return &logger
|
||||
}
|
||||
|
||||
// injects the logger into context
|
||||
func Inject(r *http.Request, l *zerolog.Logger) *http.Request {
|
||||
ctx := context.WithValue(r.Context(), loggerKey, l)
|
||||
r = r.WithContext(ctx)
|
||||
return r
|
||||
}
|
||||
|
||||
func NewContext(l *zerolog.Logger) context.Context {
|
||||
ctx := context.WithValue(context.Background(), loggerKey, l)
|
||||
return ctx
|
||||
}
|
||||
|
||||
// retrieves the logger from context
|
||||
func FromContext(ctx context.Context) *zerolog.Logger {
|
||||
logger, ok := ctx.Value(loggerKey).(*zerolog.Logger)
|
||||
if !ok || logger == nil {
|
||||
defaultLogger := zerolog.New(os.Stdout)
|
||||
return &defaultLogger
|
||||
}
|
||||
return logger
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue