mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-08-23 01:27:13 +02:00
cmd/ctrld: rework "verbose" flag
This commit changes "verbose" flag from boolean to count flag, so we can specify the flag multiple times to indicate different logging output: - No "-v": no query logging except startup/listeners - "-v" : query logging enabled - "-vv" : debug level logging enabled
This commit is contained in:
+6
-1
@@ -31,7 +31,12 @@ func initCLI() {
|
|||||||
Short: "Running Control-D DNS proxy server",
|
Short: "Running Control-D DNS proxy server",
|
||||||
Version: "1.0.1",
|
Version: "1.0.1",
|
||||||
}
|
}
|
||||||
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose log output")
|
rootCmd.PersistentFlags().CountVarP(
|
||||||
|
&verbose,
|
||||||
|
"verbose",
|
||||||
|
"v",
|
||||||
|
`verbose log output, "-v" means query logging enabled, "-vv" means debug level logging enabled`,
|
||||||
|
)
|
||||||
|
|
||||||
runCmd := &cobra.Command{
|
runCmd := &cobra.Command{
|
||||||
Use: "run",
|
Use: "run",
|
||||||
|
|||||||
+16
-10
@@ -15,7 +15,7 @@ var (
|
|||||||
configPath string
|
configPath string
|
||||||
daemon bool
|
daemon bool
|
||||||
cfg ctrld.Config
|
cfg ctrld.Config
|
||||||
verbose bool
|
verbose int
|
||||||
|
|
||||||
bootstrapDNS = "76.76.2.0"
|
bootstrapDNS = "76.76.2.0"
|
||||||
|
|
||||||
@@ -42,21 +42,27 @@ func initLogging() {
|
|||||||
writers = append(writers, logFile)
|
writers = append(writers, logFile)
|
||||||
}
|
}
|
||||||
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
|
||||||
if verbose || isLog {
|
consoleWriter := zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) {
|
||||||
consoleWriter := zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) {
|
w.TimeFormat = time.StampMilli
|
||||||
w.TimeFormat = time.StampMilli
|
})
|
||||||
})
|
writers = append(writers, consoleWriter)
|
||||||
writers = append(writers, consoleWriter)
|
multi := zerolog.MultiLevelWriter(writers...)
|
||||||
multi := zerolog.MultiLevelWriter(writers...)
|
mainLog = mainLog.Output(multi).With().Timestamp().Str("prefix", "main").Logger()
|
||||||
mainLog = mainLog.Output(multi).With().Timestamp().Str("prefix", "main").Logger()
|
if verbose > 0 || isLog {
|
||||||
proxyLog = proxyLog.Output(multi).With().Timestamp().Logger()
|
proxyLog = proxyLog.Output(multi).With().Timestamp().Logger()
|
||||||
// TODO: find a better way.
|
// TODO: find a better way.
|
||||||
ctrld.ProxyLog = proxyLog
|
ctrld.ProxyLog = proxyLog
|
||||||
}
|
}
|
||||||
if cfg.Service.LogLevel == "" {
|
|
||||||
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
||||||
|
logLevel := cfg.Service.LogLevel
|
||||||
|
if verbose > 1 {
|
||||||
|
logLevel = "debug"
|
||||||
|
}
|
||||||
|
if logLevel == "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
level, err := zerolog.ParseLevel(cfg.Service.LogLevel)
|
level, err := zerolog.ParseLevel(logLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mainLog.Warn().Err(err).Msg("could not set log level")
|
mainLog.Warn().Err(err).Msg("could not set log level")
|
||||||
return
|
return
|
||||||
|
|||||||
+3
-3
@@ -79,7 +79,7 @@ func (p *prog) run() {
|
|||||||
default:
|
default:
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
proxyLog.Info().Str("bootstrap_ip", uc.BootstrapIP).Msgf("Setting bootstrap IP for upstream.%s", n)
|
mainLog.Info().Str("bootstrap_ip", uc.BootstrapIP).Msgf("Setting bootstrap IP for upstream.%s", n)
|
||||||
// Stop if we reached here, because we got the bootstrap IP from r.Answer.
|
// Stop if we reached here, because we got the bootstrap IP from r.Answer.
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ func (p *prog) run() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
addr := net.JoinHostPort(listenerConfig.IP, strconv.Itoa(listenerConfig.Port))
|
addr := net.JoinHostPort(listenerConfig.IP, strconv.Itoa(listenerConfig.Port))
|
||||||
proxyLog.Info().Msgf("Starting DNS server on listener.%s: %s", listenerNum, addr)
|
mainLog.Info().Msgf("Starting DNS server on listener.%s: %s", listenerNum, addr)
|
||||||
err := p.serveUDP(listenerNum)
|
err := p.serveUDP(listenerNum)
|
||||||
if err != nil && !defaultConfigWritten {
|
if err != nil && !defaultConfigWritten {
|
||||||
proxyLog.Error().Err(err).Msgf("Unable to start dns proxy on listener.%s", listenerNum)
|
proxyLog.Error().Err(err).Msgf("Unable to start dns proxy on listener.%s", listenerNum)
|
||||||
@@ -130,7 +130,7 @@ func (p *prog) run() {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
writeConfigFile()
|
writeConfigFile()
|
||||||
proxyLog.Info().Msgf("Starting DNS server on listener.%s: %s", listenerNum, pc.LocalAddr())
|
mainLog.Info().Msgf("Starting DNS server on listener.%s: %s", listenerNum, pc.LocalAddr())
|
||||||
// There can be a race between closing the listener and start our own UDP server, but it's
|
// There can be a race between closing the listener and start our own UDP server, but it's
|
||||||
// rare, and we only do this once, so let conservative here.
|
// rare, and we only do this once, so let conservative here.
|
||||||
if err := pc.Close(); err != nil {
|
if err := pc.Close(); err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user