73 lines
1.9 KiB
Go
73 lines
1.9 KiB
Go
package logging
|
|
|
|
import (
|
|
"sync/atomic"
|
|
)
|
|
|
|
// 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
|
|
)
|
|
|
|
// 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{})
|
|
}
|
|
|
|
// LoggerFactory is the basic pion LoggerFactory interface
|
|
type LoggerFactory interface {
|
|
NewLogger(scope string) LeveledLogger
|
|
}
|