make application with base logic

This commit is contained in:
Gitea
2023-11-26 15:39:34 +03:00
parent 0553ea71c3
commit 606b94e35b
32 changed files with 1070 additions and 27 deletions

View File

@ -0,0 +1,55 @@
package config
import (
"log/slog"
"os"
)
type LogFormat uint8
const (
LogFormatText LogFormat = iota
LogFormatJSON
)
type LogLevel uint8
const (
LogLevelDebug LogLevel = iota
LogLevelInfo
LogLevelWarn
LogLevelError
)
type LogConfig struct {
Level LogLevel
Format LogFormat
}
func NewSLogger(config LogConfig) *slog.Logger {
var level slog.Level
switch config.Level {
case LogLevelDebug:
level = slog.LevelDebug
case LogLevelInfo:
level = slog.LevelInfo
case LogLevelWarn:
level = slog.LevelWarn
case LogLevelError:
level = slog.LevelError
}
opts := &slog.HandlerOptions{
Level: level,
}
var h slog.Handler
switch config.Format {
case LogFormatJSON:
h = slog.NewJSONHandler(os.Stdout, opts)
case LogFormatText:
h = slog.NewTextHandler(os.Stdout, opts)
}
return slog.New(h)
}