/
logs.go
93 lines (79 loc) · 2.08 KB
/
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package record
import (
"encoding/json"
"fmt"
"os"
"strconv"
"time"
"github.com/olekukonko/tablewriter"
"github.com/spf13/cobra"
app "github.com/chinatree/dnsctl/internal/app/aliyun"
)
var (
logsCmd = &cobra.Command{
Use: "logs",
Short: "获取解析记录操作日志",
Long: "根据传入参数获取域名的解析操作日志。",
Example: fmt.Sprintf(
"%s %s", app.Name,
"record logs --domain yuntree.com --lang zh",
),
PreRun: app.ParseArgs,
Run: logsFunc,
}
)
// logsFunc executes the "record logs" command.
func logsFunc(cmd *cobra.Command, args []string) {
domain := cmd.Flag("domain").Value.String()
keyword := cmd.Flag("keyword").Value.String()
lang := cmd.Flag("lang").Value.String()
start := cmd.Flag("start").Value.String()
end := cmd.Flag("end").Value.String()
page, _ := cmd.Flags().GetInt("page")
size, _ := cmd.Flags().GetInt("size")
if domain == "" {
panic("DomainName is mandatory for this action.")
}
resp, err := app.Client.GetDomainRecordLogs(
domain, keyword, lang,
start,
end,
page,
size,
)
if err != nil {
panic(err)
}
// data, _ := convert.StringToJSONWithIndent(string(resp))
// fmt.Println(data)
// Parse Response
var logs *Logs
err = json.Unmarshal(resp, &logs)
if err != nil {
panic(err)
}
// data, _ := convert.StructToJSONWithIndent(logs)
// fmt.Println(data)
rows := make([][]string, 0)
for idx, log := range logs.Logs.RecordLog {
row := make([]string, 0)
row = append(row, strconv.Itoa(idx))
row = append(row, time.Unix(log.ActionTimestamp/1e3, 0).Format("2006-01-02 15:04:05"))
row = append(row, log.Message)
rows = append(rows, row)
}
table := tablewriter.NewWriter(os.Stdout)
tableHeader := []string{
"序号", "操作时间", "操作行为",
}
tableHeaderColor := make([]tablewriter.Colors, 0)
for i := 0; i < len(tableHeader); i++ {
tableHeaderColor = append(tableHeaderColor, tablewriter.Colors{tablewriter.Bold})
}
table.SetHeader(tableHeader)
table.SetHeaderColor(tableHeaderColor...)
table.SetColWidth(200)
table.SetRowLine(true)
table.AppendBulk(rows)
table.Render()
}