Files
netstack/logger/logger.go
2022-12-12 20:33:50 +08:00

70 lines
930 B
Go

package logger
import (
"log"
"sync"
)
/*
logger.GetInstance(IP|TCP)
logger.GetInstance().Info(logger.IP, msg) // 会输出
logger.GetInstance().Info(logger.UDP, msg) // 不会输出
*/
const (
// ETH 以太网
ETH = 1 << iota
IP
ARP
UDP
TCP
// HANDSHAKE 三次握手 四次挥手
HANDSHAKE
)
type logger struct {
flags uint8
}
var instance *logger
var once sync.Once
// GetInstance 获取日志实例
func GetInstance() *logger {
once.Do(func() {
instance = &logger{
//flags: 255,
}
})
return instance
}
// SetFlags 设置输出类型
func SetFlags(flags uint8) {
GetInstance().flags = flags
}
func (l *logger) Info(mask uint8, f func()) {
if mask&l.flags != 0 {
f()
}
}
func (l *logger) info(f func()) {
f()
}
func TODO(msg string) {
GetInstance().info(func() {
log.Println("TODO: " + msg)
})
}
func FIXME(msg string) {
GetInstance().info(func() {
log.Fatal("FIXME: " + msg)
})
}