Skip to content

Commit

Permalink
Improve: add log level
Browse files Browse the repository at this point in the history
  • Loading branch information
Dreamacro committed Jun 22, 2018
1 parent 9c2ace1 commit 018a6ba
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 16 deletions.
40 changes: 35 additions & 5 deletions hub/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,6 @@ type Traffic struct {
Down int64 `json:"down"`
}

type Log struct {
Type string `json:"type"`
Payload string `json:"payload"`
}

type Error struct {
Error string `json:"error"`
}
Expand Down Expand Up @@ -60,7 +55,38 @@ func traffic(w http.ResponseWriter, r *http.Request) {
}
}

type GetLogs struct {
Level string `json:"level"`
}

type Log struct {
Type string `json:"type"`
Payload string `json:"payload"`
}

func getLogs(w http.ResponseWriter, r *http.Request) {
req := &GetLogs{}
render.DecodeJSON(r.Body, req)
if req.Level == "" {
req.Level = "info"
}

mapping := map[string]tunnel.LogLevel{
"info": tunnel.INFO,
"debug": tunnel.DEBUG,
"error": tunnel.ERROR,
"warning": tunnel.WARNING,
}

level, ok := mapping[req.Level]
if !ok {
w.WriteHeader(http.StatusBadRequest)
render.JSON(w, r, Error{
Error: "Level error",
})
return
}

src := tun.Log()
sub, err := src.Subscribe()
defer src.UnSubscribe(sub)
Expand All @@ -74,6 +100,10 @@ func getLogs(w http.ResponseWriter, r *http.Request) {
render.Status(r, http.StatusOK)
for elm := range sub {
log := elm.(tunnel.Log)
if log.LogLevel > level {
continue
}

if err := json.NewEncoder(w).Encode(Log{
Type: log.Type(),
Payload: log.Payload,
Expand Down
20 changes: 10 additions & 10 deletions tunnel/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@ import (
)

const (
INFO LogType = iota
ERROR LogLevel = iota
WARNING
ERROR
INFO
DEBUG
)

type LogType int
type LogLevel int

type Log struct {
LogType LogType
Payload string
LogLevel LogLevel
Payload string
}

func (l *Log) Type() string {
switch l.LogType {
switch l.LogLevel {
case INFO:
return "Info"
case WARNING:
Expand All @@ -36,7 +36,7 @@ func (l *Log) Type() string {
}

func print(data Log) {
switch data.LogType {
switch data.LogLevel {
case INFO:
log.Infoln(data.Payload)
case WARNING:
Expand All @@ -59,9 +59,9 @@ func (t *Tunnel) subscribeLogs() {
}
}

func newLog(logType LogType, format string, v ...interface{}) Log {
func newLog(logLevel LogLevel, format string, v ...interface{}) Log {
return Log{
LogType: logType,
Payload: fmt.Sprintf(format, v...),
LogLevel: logLevel,
Payload: fmt.Sprintf(format, v...),
}
}
2 changes: 1 addition & 1 deletion tunnel/tunnel.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func (t *Tunnel) match(addr *C.Addr) C.Proxy {
if !ok {
continue
}
t.logCh <- newLog(INFO, "%v match %d using %s", addr.String(), rule.RuleType(), rule.Adapter())
t.logCh <- newLog(INFO, "%v match %s using %s", addr.String(), rule.RuleType().String(), rule.Adapter())
return a
}
}
Expand Down

0 comments on commit 018a6ba

Please sign in to comment.