Files
netstack/logger/logger.go
2022-12-09 09:29:44 +08:00

53 lines
701 B
Go

package logger
import (
"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()
}
}