mirror of https://github.com/jetkvm/kvm.git
98 lines
2.4 KiB
Go
98 lines
2.4 KiB
Go
// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package logging
|
|
|
|
import (
|
|
"sync/atomic"
|
|
|
|
"github.com/rs/zerolog"
|
|
)
|
|
|
|
// LogLevel represents the level at which the logger will emit log messages.
|
|
type LogLevel int32
|
|
|
|
// Set updates the LogLevel to the supplied value.
|
|
func (ll *LogLevel) Set(newLevel LogLevel) {
|
|
atomic.StoreInt32((*int32)(ll), int32(newLevel))
|
|
}
|
|
|
|
// Get retrieves the current LogLevel value.
|
|
func (ll *LogLevel) Get() LogLevel {
|
|
return LogLevel(atomic.LoadInt32((*int32)(ll)))
|
|
}
|
|
|
|
func (ll LogLevel) String() string {
|
|
switch ll {
|
|
case LogLevelDisabled:
|
|
return "Disabled"
|
|
case LogLevelError:
|
|
return "Error"
|
|
case LogLevelWarn:
|
|
return "Warn"
|
|
case LogLevelInfo:
|
|
return "Info"
|
|
case LogLevelDebug:
|
|
return "Debug"
|
|
case LogLevelTrace:
|
|
return "Trace"
|
|
default:
|
|
return "UNKNOWN"
|
|
}
|
|
}
|
|
|
|
const (
|
|
// LogLevelDisabled completely disables logging of any events.
|
|
LogLevelDisabled LogLevel = iota
|
|
// LogLevelError is for fatal errors which should be handled by user code,
|
|
// but are logged to ensure that they are seen.
|
|
LogLevelError
|
|
// LogLevelWarn is for logging abnormal, but non-fatal library operation.
|
|
LogLevelWarn
|
|
// LogLevelInfo is for logging normal library operation (e.g. state transitions, etc.).
|
|
LogLevelInfo
|
|
// LogLevelDebug is for logging low-level library information (e.g. internal operations).
|
|
LogLevelDebug
|
|
// LogLevelTrace is for logging very low-level library information (e.g. network traces).
|
|
LogLevelTrace
|
|
)
|
|
|
|
func toZerologLevel(level LogLevel) zerolog.Level {
|
|
switch level {
|
|
case LogLevelDisabled:
|
|
return zerolog.Disabled
|
|
case LogLevelError:
|
|
return zerolog.ErrorLevel
|
|
case LogLevelWarn:
|
|
return zerolog.WarnLevel
|
|
case LogLevelInfo:
|
|
return zerolog.InfoLevel
|
|
case LogLevelDebug:
|
|
return zerolog.DebugLevel
|
|
case LogLevelTrace:
|
|
return zerolog.TraceLevel
|
|
default:
|
|
return zerolog.NoLevel
|
|
}
|
|
}
|
|
|
|
// LeveledLogger is the basic pion Logger interface.
|
|
type LeveledLogger interface {
|
|
Trace(msg string)
|
|
Tracef(format string, args ...interface{})
|
|
Debug(msg string)
|
|
Debugf(format string, args ...interface{})
|
|
Info(msg string)
|
|
Infof(format string, args ...interface{})
|
|
Warn(msg string)
|
|
Warnf(format string, args ...interface{})
|
|
Error(msg string)
|
|
Errorf(format string, args ...interface{})
|
|
GetLogger() *zerolog.Logger
|
|
}
|
|
|
|
// LoggerFactory is the basic pion LoggerFactory interface.
|
|
type LoggerFactory interface {
|
|
NewLogger(scope string) LeveledLogger
|
|
}
|