mirror of
https://github.com/impact-eintr/netstack.git
synced 2025-10-16 01:40:37 +08:00
90 lines
1.5 KiB
Go
90 lines
1.5 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
"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, v ...string) {
|
|
GetInstance().info(func() {
|
|
log.Printf("\033[1;37;41mTODO: %s\033[0m\n", msg+" "+strings.Join(v, " "))
|
|
})
|
|
}
|
|
|
|
func FIXME(msg string, v ...string) {
|
|
GetInstance().info(func() {
|
|
log.Fatalf("\033[1;37;41mFIXME: %s\033[0m\n", msg+" "+strings.Join(v, " "))
|
|
})
|
|
}
|
|
|
|
func NOTICE(msg string, v ...string) {
|
|
GetInstance().info(func() {
|
|
log.Printf("\033[1;37;41mNOTICE: %s\033[0m\n", msg+" "+strings.Join(v, " "))
|
|
})
|
|
}
|
|
|
|
func COLORS() {
|
|
for b := 40; b <= 47; b++ { // 背景色彩 = 40-47
|
|
for f := 30; f <= 37; f++ { // 前景色彩 = 30-37
|
|
for d := range []int{0, 1, 4, 5, 7, 8} { // 显示方式 = 0,1,4,5,7,8
|
|
fmt.Printf(" %c[%d;%d;%dm%s(f=%d,b=%d,d=%d)%c[0m ", 0x1B, d, b, f, "", f, b, d, 0x1B)
|
|
}
|
|
fmt.Println("")
|
|
}
|
|
fmt.Println("")
|
|
}
|
|
}
|