Commit 06c7ea85 authored by Matt Tucker's avatar Matt Tucker Committed by Henning Jacobs
Browse files

add --log-level=<level> flag to override log-level, remove --debug flag (#339)

parent dd1cc4d5
Showing with 23 additions and 9 deletions
+23 -9
......@@ -54,9 +54,12 @@ func main() {
if cfg.DryRun {
log.Info("running in dry-run mode. No changes to DNS records will be made.")
}
if cfg.Debug {
log.SetLevel(log.DebugLevel)
ll, err := log.ParseLevel(cfg.LogLevel)
if err != nil {
log.Fatalf("failed to parse log level: %v", err)
}
log.SetLevel(ll)
stopChan := make(chan struct{}, 1)
......
......@@ -19,6 +19,7 @@ package externaldns
import (
"time"
"github.com/Sirupsen/logrus"
"github.com/alecthomas/kingpin"
)
......@@ -51,7 +52,7 @@ type Config struct {
DryRun bool
LogFormat string
MetricsAddress string
Debug bool
LogLevel string
}
var defaultConfig = &Config{
......@@ -78,7 +79,7 @@ var defaultConfig = &Config{
DryRun: false,
LogFormat: "text",
MetricsAddress: ":7979",
Debug: false,
LogLevel: logrus.InfoLevel.String(),
}
// NewConfig returns new Config object
......@@ -86,6 +87,15 @@ func NewConfig() *Config {
return &Config{}
}
// allLogLevelsAsStrings returns all logrus levels as a list of strings
func allLogLevelsAsStrings() []string {
var levels []string
for _, level := range logrus.AllLevels {
levels = append(levels, level.String())
}
return levels
}
// ParseFlags adds and parses flags from command line
func (cfg *Config) ParseFlags(args []string) error {
app := kingpin.New("external-dns", "ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.\n\nNote that all flags may be replaced with env vars - `--flag` -> `EXTERNAL_DNS_FLAG=1` or `--flag value` -> `EXTERNAL_DNS_FLAG=value`")
......@@ -128,7 +138,7 @@ func (cfg *Config) ParseFlags(args []string) error {
// Miscellaneous flags
app.Flag("log-format", "The format in which log messages are printed (default: text, options: text, json)").Default(defaultConfig.LogFormat).EnumVar(&cfg.LogFormat, "text", "json")
app.Flag("metrics-address", "Specify where to serve the metrics and health check endpoint (default: :7979)").Default(defaultConfig.MetricsAddress).StringVar(&cfg.MetricsAddress)
app.Flag("debug", "When enabled, increases the logging output for debugging purposes (default: disabled)").BoolVar(&cfg.Debug)
app.Flag("log-level", "Set the level of logging. (default: info, options: panic, debug, info, warn, error, fatal").Default(defaultConfig.LogLevel).EnumVar(&cfg.LogLevel, allLogLevelsAsStrings()...)
_, err := app.Parse(args)
if err != nil {
......
......@@ -21,6 +21,7 @@ import (
"testing"
"time"
"github.com/Sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
......@@ -49,7 +50,7 @@ var (
DryRun: false,
LogFormat: "text",
MetricsAddress: ":7979",
Debug: false,
LogLevel: logrus.InfoLevel.String(),
}
overriddenConfig = &Config{
......@@ -75,7 +76,7 @@ var (
DryRun: true,
LogFormat: "json",
MetricsAddress: "127.0.0.1:9099",
Debug: true,
LogLevel: logrus.DebugLevel.String(),
}
)
......@@ -122,7 +123,7 @@ func TestParseFlags(t *testing.T) {
"--dry-run",
"--log-format=json",
"--metrics-address=127.0.0.1:9099",
"--debug",
"--log-level=debug",
},
envVars: map[string]string{},
expected: overriddenConfig,
......@@ -153,7 +154,7 @@ func TestParseFlags(t *testing.T) {
"EXTERNAL_DNS_DRY_RUN": "1",
"EXTERNAL_DNS_LOG_FORMAT": "json",
"EXTERNAL_DNS_METRICS_ADDRESS": "127.0.0.1:9099",
"EXTERNAL_DNS_DEBUG": "1",
"EXTERNAL_DNS_LOG_LEVEL": "debug",
},
expected: overriddenConfig,
},
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment