forked from textileio/go-textile
-
Notifications
You must be signed in to change notification settings - Fork 0
/
api_logs.go
55 lines (49 loc) · 1.23 KB
/
api_logs.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package core
import (
logging "gx/ipfs/QmZChCsSt8DctjceaL56Eibc29CVQq4dGKRXC5JRZ6Ppae/go-log"
logger "gx/ipfs/QmcaSwFc5RBg8yCq54QURwEU4nwjfCpjbpmaAm4VbdGLKv/go-logging"
"net/http"
"strings"
"github.com/gin-gonic/gin"
)
func (a *api) logsCall(g *gin.Context) {
subsystem := g.Param("subsystem")
var subsystems []string
if subsystem == "" {
subsystems = logging.GetSubsystems()
} else {
subsystems = []string{subsystem}
}
opts, err := a.readOpts(g)
if err != nil {
a.abort500(g, err)
return
}
level := strings.ToUpper(opts["level"])
texOnly := opts["tex-only"] == "true"
result := make(map[string]string)
for _, system := range subsystems {
if texOnly && !strings.HasPrefix(system, "tex") {
continue
}
var llevel logger.Level
if level != "" && g.Request.Method == "POST" {
// validate log level
llevel, err = logger.LogLevel(level)
if err != nil {
g.String(http.StatusBadRequest, err.Error())
return
}
} else {
llevel = logger.GetLevel(system)
}
// validate subsystem + set log level
err = logging.SetLogLevel(system, llevel.String())
if err != nil {
g.String(http.StatusBadRequest, err.Error())
return
}
result[system] = llevel.String()
}
g.JSON(http.StatusOK, result)
}