add option to log verbose output to file

This commit is contained in:
Donald Clark Jackson 2017-11-21 11:40:54 -08:00
parent a49364ae93
commit b0f4dbb896

View File

@ -30,6 +30,7 @@ var (
ip = flag.String("ip", "0.0.0.0", "ip the webhook should serve hooks on") ip = flag.String("ip", "0.0.0.0", "ip the webhook should serve hooks on")
port = flag.Int("port", 9000, "port the webhook should serve hooks on") port = flag.Int("port", 9000, "port the webhook should serve hooks on")
verbose = flag.Bool("verbose", false, "show verbose output") verbose = flag.Bool("verbose", false, "show verbose output")
logFilePath = flag.String("logfile", "webhook.log", "path to the file into which webhook will append verbose output, verbose option MUST be specified to use")
noPanic = flag.Bool("nopanic", false, "do not panic if hooks cannot be loaded when webhook is not running in verbose mode") noPanic = flag.Bool("nopanic", false, "do not panic if hooks cannot be loaded when webhook is not running in verbose mode")
hotReload = flag.Bool("hotreload", false, "watch hooks file for changes and reload them automatically") hotReload = flag.Bool("hotreload", false, "watch hooks file for changes and reload them automatically")
hooksURLPrefix = flag.String("urlprefix", "hooks", "url prefix to use for served hooks (protocol://yourserver:port/PREFIX/:hook-id)") hooksURLPrefix = flag.String("urlprefix", "hooks", "url prefix to use for served hooks (protocol://yourserver:port/PREFIX/:hook-id)")
@ -41,6 +42,8 @@ var (
responseHeaders hook.ResponseHeaders responseHeaders hook.ResponseHeaders
hooksFiles hook.HooksFiles hooksFiles hook.HooksFiles
logFile = os.Stdout
loadedHooksFromFiles = make(map[string]hook.Hooks) loadedHooksFromFiles = make(map[string]hook.Hooks)
watcher *fsnotify.Watcher watcher *fsnotify.Watcher
@ -88,6 +91,18 @@ func main() {
log.SetOutput(ioutil.Discard) log.SetOutput(ioutil.Discard)
} }
if *verbose {
if len(*logFilePath) != 0 {
logFile, err := os.OpenFile(*logFilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.SetOutput(os.Stdout)
log.Fatalf("Couldn't open -logfile %s", *logFilePath)
} else {
log.SetOutput(logFile)
}
}
}
log.Println("version " + version + " starting") log.Println("version " + version + " starting")
// set os signal watcher // set os signal watcher
@ -157,7 +172,7 @@ func main() {
l.SetFormat("{{.Status}} | {{.Duration}} | {{.Hostname}} | {{.Method}} {{.Path}} \n") l.SetFormat("{{.Status}} | {{.Duration}} | {{.Hostname}} | {{.Method}} {{.Path}} \n")
standardLogger := log.New(os.Stdout, "[webhook] ", log.Ldate|log.Ltime) standardLogger := log.New(logFile, "[webhook] ", log.Ldate|log.Ltime)
if !*verbose { if !*verbose {
standardLogger.SetOutput(ioutil.Discard) standardLogger.SetOutput(ioutil.Discard)