mirror of
https://github.com/go-i2p/go-i2cp.git
synced 2025-06-07 17:04:59 -04:00
92 lines
2.0 KiB
Go
92 lines
2.0 KiB
Go
package go_i2cp
|
|
|
|
import "fmt"
|
|
|
|
const (
|
|
PROTOCOL = (1 << 0)
|
|
LOGIC = (1 << 1)
|
|
|
|
DEBUG = (1 << 4)
|
|
INFO = (1 << 5)
|
|
WARNING = (1 << 6)
|
|
ERROR = (1 << 7)
|
|
FATAL = (1 << 8)
|
|
|
|
STRINGMAP = (1 << 9)
|
|
INTMAP = (1 << 10)
|
|
QUEUE = (1 << 11)
|
|
STREAM = (1 << 12)
|
|
CRYPTO = (1 << 13)
|
|
TCP = (1 << 14)
|
|
CLIENT = (1 << 15)
|
|
CERTIFICATE = (1 << 16)
|
|
LEASE = (1 << 17)
|
|
DESTINATION = (1 << 18)
|
|
SESSION = (1 << 19)
|
|
SESSION_CONFIG = (1 << 20)
|
|
TEST = (1 << 21)
|
|
DATAGRAM = (1 << 22)
|
|
CONFIG_FILE = (1 << 23)
|
|
VERSION = (1 << 24)
|
|
|
|
TAG_MASK = 0x0000000f
|
|
LEVEL_MASK = 0x000001f0
|
|
COMPONENT_MASK = 0xfffffe00
|
|
|
|
ALL = 0xffffffff
|
|
)
|
|
|
|
type LoggerTags = uint32
|
|
type LoggerCallbacks struct {
|
|
opaque *interface{}
|
|
onLog func(*Logger, LoggerTags, string)
|
|
}
|
|
type Logger struct {
|
|
callbacks *LoggerCallbacks
|
|
logLevel int
|
|
}
|
|
|
|
var logInstance *Logger
|
|
|
|
// TODO filter
|
|
func LogInit(callbacks *LoggerCallbacks, level int) {
|
|
logInstance = &Logger{callbacks: callbacks}
|
|
logInstance.setLogLevel(level)
|
|
}
|
|
func Debug(tags LoggerTags, message string, args ...interface{}) {
|
|
logInstance.log(tags|DEBUG, message, args...)
|
|
}
|
|
func Info(tags LoggerTags, message string, args ...interface{}) {
|
|
logInstance.log(tags|INFO, message, args...)
|
|
}
|
|
func Warning(tags LoggerTags, message string, args ...interface{}) {
|
|
logInstance.log(tags|WARNING, message, args...)
|
|
}
|
|
func Error(tags LoggerTags, message string, args ...interface{}) {
|
|
logInstance.log(tags|ERROR, message, args...)
|
|
}
|
|
func Fatal(tags LoggerTags, message string, args ...interface{}) {
|
|
logInstance.log(tags|FATAL, message, args...)
|
|
}
|
|
|
|
func (l *Logger) log(tags LoggerTags, format string, args ...interface{}) {
|
|
if l.callbacks == nil {
|
|
fmt.Printf(format, args)
|
|
} else {
|
|
l.callbacks.onLog(l, tags, fmt.Sprintf(format, args))
|
|
}
|
|
}
|
|
|
|
func (l *Logger) setLogLevel(level int) {
|
|
switch level {
|
|
case DEBUG:
|
|
case INFO:
|
|
case WARNING:
|
|
case ERROR:
|
|
case FATAL:
|
|
l.logLevel = level
|
|
default:
|
|
l.logLevel = ERROR
|
|
}
|
|
}
|