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
|
||
|
}
|