@@ -15,7 +15,7 @@ var Opts = struct {
15
15
SvcDomains []string
16
16
Zone string
17
17
OutputFile string
18
- Verbose string
18
+ Verbose int
19
19
20
20
MultiThreadingMode bool
21
21
ThreadingNum int
@@ -30,7 +30,7 @@ func init() {
30
30
RootCmd .PersistentFlags ().StringSliceVarP (& Opts .SvcDomains , "svc-domains" , "s" , []string {}, "service domains, like: kubernetes.default,etcd.default don't add zone like svc.cluster.local" )
31
31
RootCmd .PersistentFlags ().StringVarP (& Opts .Zone , "zone" , "z" , "cluster.local" , "zone" )
32
32
RootCmd .PersistentFlags ().StringVarP (& Opts .OutputFile , "output-file" , "o" , "" , "output file" )
33
- RootCmd .PersistentFlags ().StringVarP (& Opts .Verbose , "verbose" , "v" , "info" , " log level (debug,info, trace,warn,error,fatal,panic) " )
33
+ RootCmd .PersistentFlags ().CountVarP (& Opts .Verbose , "verbose" , "v" , "log level (-v debug,-vv trace, info " )
34
34
RootCmd .PersistentFlags ().BoolVarP (& Opts .MultiThreadingMode , "thread" , "t" , false , "multi threading mode, work pair with -n" )
35
35
RootCmd .PersistentFlags ().IntVarP (& Opts .ThreadingNum , "thread-num" , "n" , 16 , "threading num, default 16" )
36
36
@@ -42,42 +42,39 @@ var RootCmd = &cobra.Command{
42
42
Short : "k8spider is a tool to discover k8s services" ,
43
43
Long : "k8spider is a tool to discover k8s services" ,
44
44
PersistentPreRun : func (cmd * cobra.Command , args []string ) {
45
+ // Set Log Levels
45
46
SetLogLevel (Opts .Verbose )
47
+ // Set pkg global config
48
+ pkg .Zone = Opts .Zone
46
49
if Opts .DnsServer != "" {
47
50
pkg .NetResolver = pkg .WarpDnsServer (Opts .DnsServer )
48
51
}
49
- if Opts .SkipKubeDNSCheck == false { // Not Skip
52
+ // Check if current environment is a kubernetes cluster
53
+ // If the command is whereisdns, that DNS is not sure , so skip this check
54
+ // If SkipKubeDNSCheck is true, skip this check!
55
+ if Opts .SkipKubeDNSCheck == false || cmd .Use != "whereisdns" {
50
56
if pkg .CheckKubeDNS () {
51
57
log .Warn ("current environment is not a kubernetes cluster" )
52
58
os .Exit (1 )
53
59
}
54
60
}
55
- pkg .Zone = Opts .Zone
56
61
},
57
62
Run : func (cmd * cobra.Command , args []string ) {
58
63
_ = cmd .Help ()
59
64
},
60
65
}
61
66
62
- func SetLogLevel (level string ) {
63
- switch level {
64
- case "trace" :
65
- log .SetLevel (log .TraceLevel )
66
- case "debug" :
67
- log .SetLevel (log .DebugLevel )
68
- case "info" :
69
- log .SetLevel (log .InfoLevel )
70
- case "warn" :
71
- log .SetLevel (log .WarnLevel )
72
- case "error" :
73
- log .SetLevel (log .ErrorLevel )
74
- case "fatal" :
75
- log .SetLevel (log .FatalLevel )
76
- case "panic" :
77
- log .SetLevel (log .PanicLevel )
78
- default :
79
- log .SetLevel (log .InfoLevel )
67
+ var LevelMap = []log.Level {
68
+ log .InfoLevel , // 0
69
+ log .DebugLevel , // 1
70
+ log .TraceLevel , // 2
71
+ }
72
+
73
+ func SetLogLevel (level int ) {
74
+ if level > 2 {
75
+ level = 2
80
76
}
77
+ log .SetLevel (LevelMap [level ])
81
78
}
82
79
83
80
func Execute () {
0 commit comments