mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-13 04:24:09 +08:00
new logger
This commit is contained in:
@@ -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)
|
||||
}
|
@@ -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{})
|
||||
}
|
@@ -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...)
|
||||
}
|
28
log/level.go
Normal file
28
log/level.go
Normal file
@@ -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"
|
||||
}
|
||||
}
|
78
log/log.go
Normal file
78
log/log.go
Normal file
@@ -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...),
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user