11package main
22
33import (
4- "log"
4+ "strings"
5+ "time"
56
7+ "github.com/levenlabs/go-llog"
68 "github.com/mediocregopher/lever"
79 "github.com/miekg/dns"
8- "strings"
9- "time"
1010)
1111
1212var dnsServerGroups [][]string
@@ -15,7 +15,7 @@ var client dns.Client
1515func tryProxy (m * dns.Msg , addr string ) * dns.Msg {
1616 aM , _ , err := client .Exchange (m , addr )
1717 if err != nil {
18- log . Printf ("forwarding to %s got err: %s " , addr , err )
18+ llog . Error ("forwarding error in tryProxy " , llog. KV { " addr" : addr , " err" : err } )
1919 return nil
2020 } else if len (aM .Answer ) == 0 {
2121 return nil
@@ -42,6 +42,7 @@ func queryServers(r *dns.Msg, servers []string) *dns.Msg {
4242}
4343
4444func handleRequest (w dns.ResponseWriter , r * dns.Msg ) {
45+ llog .Info ("handling request" , llog.KV {"question" : r .Question [0 ].Name })
4546 var m * dns.Msg
4647 for i := range dnsServerGroups {
4748 m = queryServers (r , dnsServerGroups [i ])
@@ -50,6 +51,7 @@ func handleRequest(w dns.ResponseWriter, r *dns.Msg) {
5051 }
5152 }
5253 if m == nil {
54+ llog .Warn ("answer to request not found" , llog.KV {"question" : r .Question [0 ].Name })
5355 dns .HandleFailed (w , r )
5456 return
5557 }
@@ -79,13 +81,21 @@ func main() {
7981 Description : "Timeout in milliseconds for each request" ,
8082 Default : "300" ,
8183 })
84+ l .Add (lever.Param {
85+ Name : "--log-level" ,
86+ Description : "Minimum log level to show, either debug, info, warn, error, or fatal" ,
87+ Default : "info" ,
88+ })
8289 l .Parse ()
8390
8491 addr , _ := l .ParamStr ("--listen-addr" )
8592 dnsServers , _ := l .ParamStrs ("--fwd-to" )
8693 combineGroups := l .ParamFlag ("--parallel" )
8794 timeout , _ := l .ParamInt ("--timeout" )
8895
96+ logLevel , _ := l .ParamStr ("--log-level" )
97+ llog .SetLevelFromString (logLevel )
98+
8999 if combineGroups {
90100 //combine all the servers sent into one group
91101 dnsServerGroups = make ([][]string , 1 )
@@ -111,12 +121,14 @@ func main() {
111121
112122 handler := dns .HandlerFunc (handleRequest )
113123 go func () {
114- log .Printf ("Listening on %s (udp)" , addr )
115- log .Fatal (dns .ListenAndServe (addr , "udp" , handler ))
124+ llog .Info ("listening on udp" , llog.KV {"addr" : addr })
125+ err := dns .ListenAndServe (addr , "udp" , handler )
126+ llog .Fatal ("error listening on udp" , llog.KV {"err" : err })
116127 }()
117128 go func () {
118- log .Printf ("Listening on %s (tcp)" , addr )
119- log .Fatal (dns .ListenAndServe (addr , "tcp" , handler ))
129+ llog .Info ("listening on tcp" , llog.KV {"addr" : addr })
130+ err := dns .ListenAndServe (addr , "tcp" , handler )
131+ llog .Fatal ("error listening on tcp" , llog.KV {"err" : err })
120132 }()
121133
122134 select {}
0 commit comments