SimpleCloudNotifier/scnserver/init.go

96 lines
1.7 KiB
Go
Raw Permalink Normal View History

2022-12-20 13:55:09 +01:00
package server
2022-11-13 19:17:07 +01:00
import (
"fmt"
2022-11-13 19:17:07 +01:00
"github.com/gin-gonic/gin"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
2024-06-02 16:27:03 +02:00
"gogs.mikescher.com/BlackForestBytes/goext/exerr"
"gogs.mikescher.com/BlackForestBytes/goext/langext"
2022-11-13 19:17:07 +01:00
"os"
"path"
"path/filepath"
"runtime"
2022-11-13 19:17:07 +01:00
)
var callerRoot = ""
func init() {
_, file, _, ok := runtime.Caller(0)
if !ok {
return
}
callerRoot = path.Dir(file)
}
2022-12-20 13:55:09 +01:00
func Init(cfg Config) {
2024-06-02 16:27:03 +02:00
exerr.Init(exerr.ErrorPackageConfigInit{
ZeroLogErrTraces: langext.PTrue,
ZeroLogAllTraces: langext.PTrue,
RecursiveErrors: langext.PTrue,
ExtendedGinOutput: &cfg.ReturnRawErrors,
IncludeMetaInGinOutput: &cfg.ReturnRawErrors,
})
2022-11-13 19:17:07 +01:00
cw := zerolog.ConsoleWriter{
Out: os.Stdout,
TimeFormat: "2006-01-02 15:04:05 Z07:00",
FormatCaller: formatCaller,
2022-11-13 19:17:07 +01:00
}
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
multi := zerolog.MultiLevelWriter(cw)
logger := zerolog.New(multi).With().
Timestamp().
Caller().
Logger()
log.Logger = logger
if cfg.GinDebug {
gin.SetMode(gin.DebugMode)
} else {
gin.SetMode(gin.ReleaseMode)
}
zerolog.SetGlobalLevel(cfg.LogLevel)
2022-11-13 19:17:07 +01:00
log.Debug().Msg("Initialized")
}
func formatCaller(i any) string {
const (
colorBlack = iota + 30
colorRed
colorGreen
colorYellow
colorBlue
colorMagenta
colorCyan
colorWhite
colorBold = 1
colorDarkGray = 90
)
var c string
if cc, ok := i.(string); ok {
c = cc
}
if len(c) > 0 {
if rel, err := filepath.Rel(callerRoot, c); err == nil {
c = rel
}
c = colorize(c, colorBold, false) + colorize(" >", colorCyan, false)
}
return c
}
func colorize(s interface{}, c int, disabled bool) string {
if disabled {
return fmt.Sprintf("%s", s)
}
return fmt.Sprintf("\x1b[%dm%v\x1b[0m", c, s)
}