diff --git a/common/log/log.go b/common/log/log.go deleted file mode 100644 index d094a48..0000000 --- a/common/log/log.go +++ /dev/null @@ -1,63 +0,0 @@ -package log - -import ( - "net" - "strconv" - - "github.com/xjasonlyu/tun2socks/common/lsof" -) - -var logger Logger - -func RegisterLogger(l Logger) { - logger = l -} - -func SetLevel(level Level) { - if logger != nil { - logger.SetLevel(level) - } -} - -func Debugf(msg string, args ...interface{}) { - if logger != nil { - logger.Debugf(msg, args...) - } -} - -func Infof(msg string, args ...interface{}) { - if logger != nil { - logger.Infof(msg, args...) - } -} - -func Warnf(msg string, args ...interface{}) { - if logger != nil { - logger.Warnf(msg, args...) - } -} - -func Errorf(msg string, args ...interface{}) { - if logger != nil { - logger.Errorf(msg, args...) - } -} - -func Fatalf(msg string, args ...interface{}) { - if logger != nil { - logger.Fatalf(msg, args...) - } -} - -func Access(process, outbound, network, localAddr, target string) { - var err error - if process == "" { - localHost, localPortStr, _ := net.SplitHostPort(localAddr) - localPortInt, _ := strconv.Atoi(localPortStr) - process, err = lsof.GetCommandNameBySocket(network, localHost, uint16(localPortInt)) - if err != nil { - process = "unknown process" - } - } - Infof("[%v] [%v] [%v] %s", outbound, network, process, target) -} diff --git a/common/log/logger.go b/common/log/logger.go deleted file mode 100644 index c3f971e..0000000 --- a/common/log/logger.go +++ /dev/null @@ -1,20 +0,0 @@ -package log - -type Level uint8 - -const ( - DEBUG Level = iota - INFO - WARNING - ERROR - SILENT -) - -type Logger interface { - SetLevel(level Level) - Debugf(msg string, args ...interface{}) - Infof(msg string, args ...interface{}) - Warnf(msg string, args ...interface{}) - Errorf(msg string, args ...interface{}) - Fatalf(msg string, args ...interface{}) -} diff --git a/common/log/simple/logger.go b/common/log/simple/logger.go deleted file mode 100644 index c8137cc..0000000 --- a/common/log/simple/logger.go +++ /dev/null @@ -1,55 +0,0 @@ -package simple - -import ( - goLog "log" - - "github.com/xjasonlyu/tun2socks/common/log" -) - -func init() { - log.RegisterLogger(NewSimpleLogger()) -} - -type simpleLogger struct { - level log.Level -} - -func NewSimpleLogger() log.Logger { - return &simpleLogger{log.INFO} -} - -func (l *simpleLogger) SetLevel(level log.Level) { - l.level = level -} - -func (l *simpleLogger) Debugf(msg string, args ...interface{}) { - if l.level <= log.DEBUG { - l.output(msg, args...) - } -} - -func (l *simpleLogger) Infof(msg string, args ...interface{}) { - if l.level <= log.INFO { - l.output(msg, args...) - } -} - -func (l *simpleLogger) Warnf(msg string, args ...interface{}) { - if l.level <= log.WARNING { - l.output(msg, args...) - } -} - -func (l *simpleLogger) Errorf(msg string, args ...interface{}) { - if l.level <= log.ERROR { - l.output(msg, args...) - } -} - -func (l *simpleLogger) Fatalf(msg string, args ...interface{}) { - goLog.Fatalf(msg, args...) -} - -func (l *simpleLogger) output(msg string, args ...interface{}) { - goLog.Printf(msg, args...) -} diff --git a/log/level.go b/log/level.go new file mode 100644 index 0000000..cb80f49 --- /dev/null +++ b/log/level.go @@ -0,0 +1,28 @@ +package log + +const ( + DEBUG Level = iota + INFO + WARNING + ERROR + SILENT +) + +type Level int + +func (l Level) String() string { + switch l { + case INFO: + return "info" + case WARNING: + return "warning" + case ERROR: + return "error" + case DEBUG: + return "debug" + case SILENT: + return "silent" + default: + return "unknown" + } +} diff --git a/log/log.go b/log/log.go new file mode 100644 index 0000000..4cf03cf --- /dev/null +++ b/log/log.go @@ -0,0 +1,78 @@ +package log + +import ( + "fmt" + "os" + + log "github.com/sirupsen/logrus" +) + +var ( + level = INFO +) + +func init() { + log.SetOutput(os.Stdout) + log.SetLevel(log.DebugLevel) +} + +type Event struct { + LogLevel Level + Payload string +} + +func (e *Event) Type() string { + return e.LogLevel.String() +} + +func Infof(format string, v ...interface{}) { + event := newLog(INFO, format, v...) + printf(event) +} + +func Warnf(format string, v ...interface{}) { + event := newLog(WARNING, format, v...) + printf(event) +} + +func Errorf(format string, v ...interface{}) { + event := newLog(ERROR, format, v...) + printf(event) +} + +func Debugf(format string, v ...interface{}) { + event := newLog(DEBUG, format, v...) + printf(event) +} + +func Fatalf(format string, v ...interface{}) { + log.Fatalf(format, v...) +} + +func SetLevel(newLevel Level) { + level = newLevel +} + +func printf(data *Event) { + if data.LogLevel < level { + return + } + + switch data.LogLevel { + case INFO: + log.Infoln(data.Payload) + case WARNING: + log.Warnln(data.Payload) + case ERROR: + log.Errorln(data.Payload) + case DEBUG: + log.Debugln(data.Payload) + } +} + +func newLog(logLevel Level, format string, v ...interface{}) *Event { + return &Event{ + LogLevel: logLevel, + Payload: fmt.Sprintf(format, v...), + } +}