Skip to content

Commit 8ec32f5

Browse files
move logger to root command
Signed-off-by: Bruno Schaatsbergen <[email protected]>
1 parent d2a1afb commit 8ec32f5

File tree

2 files changed

+53
-13
lines changed

2 files changed

+53
-13
lines changed

cmd/root.go

+47-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package cmd
33
import (
44
"fmt"
55
"os"
6+
"strings"
67

8+
"github.com/hashicorp/go-hclog"
79
"github.com/hashicorp/go-multierror"
810
"github.com/spf13/cobra"
911
"github.com/znscli/zns/internal/query"
@@ -12,7 +14,9 @@ import (
1214
var (
1315
version string
1416

15-
debug bool
17+
debug bool
18+
server string
19+
qtype string
1620

1721
rootCmd = &cobra.Command{
1822
Use: "zns",
@@ -25,13 +29,50 @@ var (
2529
os.Exit(1)
2630
}
2731

28-
querier := query.NewQuerier("1.1.1.1:53", nil)
32+
// Determine log level based on environment variable and debug flag
33+
logLevel := os.Getenv("ZNS_LOG_LEVEL")
34+
if debug {
35+
logLevel = "DEBUG" // Override log level to DEBUG if the debug flag is set
36+
}
37+
38+
logger := hclog.New(&hclog.LoggerOptions{
39+
Name: "zns",
40+
Level: hclog.LevelFromString(logLevel),
41+
Color: hclog.AutoColor,
42+
ColorHeaderAndFields: true,
43+
DisableTime: true,
44+
})
45+
46+
// Log the debug state and current log level
47+
logger.Debug("Debug logging enabled", "debug", debug)
48+
logger.Debug("Log level", "level", logger.GetLevel())
49+
50+
// Log the arguments and flags
51+
logger.Debug("Args", "args", args)
52+
logger.Debug("Flags", "server", server, "qtype", qtype, "debug", debug)
53+
54+
// Create a new querier
55+
querier := query.NewQuerier(fmt.Sprintf("%s:53", server), logger)
2956

57+
logger.Debug("Creating querier", "server", server, "qtype", qtype, "domain", args[0])
58+
59+
// Prepare query types
3060
qtypes := make([]uint16, 0, len(query.QueryTypes))
3161
for _, qtype := range query.QueryTypes {
3262
qtypes = append(qtypes, qtype)
3363
}
3464

65+
// Set specific query type if provided
66+
if qtype != "" {
67+
qtypeInt, ok := query.QueryTypes[strings.ToUpper(qtype)]
68+
if !ok {
69+
fmt.Printf("error: invalid query type: %s\n", qtype)
70+
os.Exit(1)
71+
}
72+
qtypes = []uint16{qtypeInt}
73+
}
74+
75+
// Execute the query
3576
messages, err := querier.MultiQuery(args[0], qtypes)
3677
if err != nil {
3778
if merr, ok := err.(*multierror.Error); ok {
@@ -44,14 +85,17 @@ var (
4485
os.Exit(1)
4586
}
4687

88+
// Print the records
4789
printRecords(args[0], messages)
4890
},
4991
}
5092
)
5193

5294
func init() {
5395
rootCmd.CompletionOptions.DisableDefaultCmd = true
54-
rootCmd.Flags().BoolVarP(&debug, "debug", "d", false, "verbose logging")
96+
rootCmd.Flags().StringVarP(&server, "server", "s", "1.1.1.1", "DNS server to query")
97+
rootCmd.Flags().StringVarP(&qtype, "query-type", "q", "", "DNS query type")
98+
rootCmd.Flags().BoolVar(&debug, "debug", false, "Enable debug logging")
5599
}
56100

57101
func Execute() {

internal/query/query.go

+6-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"github.com/hashicorp/go-hclog"
55
"github.com/hashicorp/go-multierror"
66
"github.com/miekg/dns"
7-
"os"
87
"sync"
98
)
109

@@ -36,14 +35,6 @@ type Query struct {
3635

3736
// NewQuerier creates a new Querier with the specified server.
3837
func NewQuerier(server string, logger hclog.Logger) Querier {
39-
if logger == nil {
40-
logger = hclog.New(&hclog.LoggerOptions{
41-
Name: "zns",
42-
Level: hclog.LevelFromString(os.Getenv("ZNS_LOG_LEVEL")),
43-
Color: hclog.AutoColor,
44-
DisableTime: true,
45-
})
46-
}
4738
return &Query{Server: server, Logger: logger}
4839
}
4940

@@ -73,11 +64,16 @@ func (q *Query) Query(domain string, qtype uint16) (*dns.Msg, error) {
7364
msg := new(dns.Msg)
7465
msg.SetQuestion(dns.Fqdn(domain), qtype)
7566

67+
q.Logger.Debug("Querying DNS server", "server", q.Server, "domain", domain, "qtype", dns.TypeToString[qtype])
68+
7669
client := new(dns.Client)
77-
resp, _, err := client.Exchange(msg, q.Server)
70+
resp, rtt, err := client.Exchange(msg, q.Server)
7871
if err != nil {
7972
return nil, err
8073
}
8174

75+
q.Logger.Debug("Received DNS response", "server", q.Server, "domain", domain, "qtype", dns.TypeToString[qtype], "rcode", dns.RcodeToString[resp.Rcode])
76+
q.Logger.Debug("Round trip time", "rtt", rtt)
77+
8278
return resp, nil
8379
}

0 commit comments

Comments
 (0)