Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
package slogzerolog
import (
"log/slog"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
var LogLevels = map[slog.Level]zerolog.Level{
slog.LevelDebug: zerolog.DebugLevel,
slog.LevelInfo: zerolog.InfoLevel,
slog.LevelWarn: zerolog.WarnLevel,
slog.LevelError: zerolog.ErrorLevel,
}
var reverseLogLevels map[zerolog.Level]slog.Level
func init() {
reverseLogLevels = map[zerolog.Level]slog.Level{}
for level, z := range LogLevels {
reverseLogLevels[z] = level
}
}
// ZeroLogLeveler can be used for Option.Level (implements slog.Leveler).
// If no Logger is provided, the global zerolog.Logger is used.
type ZeroLogLeveler struct {
// optional: zerolog logger (default: log.Logger)
Logger *zerolog.Logger
}
var _ slog.Leveler = ZeroLogLeveler{}
func (z ZeroLogLeveler) Level() slog.Level {
var logger = log.Logger
if z.Logger != nil {
logger = *z.Logger
}
zeroLogLevel := logger.GetLevel()
level, ok := reverseLogLevels[zeroLogLevel]
if !ok {
switch zeroLogLevel {
case zerolog.PanicLevel, zerolog.FatalLevel:
return slog.LevelError
case zerolog.NoLevel:
return slog.LevelInfo
case zerolog.Disabled:
return slog.LevelDebug - 1
default:
if zeroLogLevel < zerolog.DebugLevel {
return slog.Level(int(slog.LevelDebug) + int(zeroLogLevel))
}
return slog.LevelInfo
}
}
return level
}