From c494023f0bf78e687ea69cb08f74c9b3522c08ef Mon Sep 17 00:00:00 2001 From: Akihiro Harai Date: Thu, 24 Jan 2019 11:21:06 +0900 Subject: [PATCH] Support log-path #9 --- immortalize.go | 22 ++++++++++++++++++---- test/test.bats | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/immortalize.go b/immortalize.go index b84e424..e6a00b0 100644 --- a/immortalize.go +++ b/immortalize.go @@ -73,7 +73,7 @@ func run(minLifetime uint, maxLifetime uint, command string) int { return status } -func configLog(level string) error { +func configLog(level string, logPath string) error { var l logrus.Level switch level { case "trace": @@ -81,14 +81,24 @@ func configLog(level string) error { case "debug": l = logrus.DebugLevel case "info": - l = logrus.DebugLevel + l = logrus.InfoLevel default: return errors.New("log level must be one of 'info', 'debug', or 'trace'") } log.SetFormatter(&logrus.JSONFormatter{}) log.SetLevel(l) - log.Out = os.Stderr + + if logPath == "" { + log.Out = os.Stderr + return nil + } + + f, err := os.Create(logPath) + if err != nil { + return err + } + log.Out = f return nil } @@ -100,9 +110,13 @@ func main() { commandPtr := flag.String("command", "command", "command to immortalize") levelPtr := flag.String( "log-level", "info", "Log level: 'info', 'debug', or 'trace'") + logPathPtr := flag.String( + "log-path", "", "Log path: default to stderr") flag.Parse() - configLog(*levelPtr) + if err := configLog(*levelPtr, *logPathPtr); err != nil { + panic(err) + } log.Debugf("PID: %v", os.Getpid()) diff --git a/test/test.bats b/test/test.bats index b349bb5..c97dd87 100644 --- a/test/test.bats +++ b/test/test.bats @@ -161,3 +161,39 @@ assert_exit_with_0 () { assert_exit_with_nonzero [ "$(result)" == 0 ] } + +@test "Log path" { + log=work/immortalize.log + rm -f "$log" + ./work/immortalize \ + -max-lifetime 2 \ + -command test-bin/command-zero \ + -log-path "$log" >&3 2>&1 + + [ 1 -lt "$(wc -l < "$log")" ] +} + +@test "log level - default (info)" { + log=work/immortalize.log + rm -f "$log" + ./work/immortalize \ + -max-lifetime 2 \ + -command test-bin/command-zero \ + -log-path "$log" >&3 2>&1 + + [ 1 -lt "$(grep info < "$log" | wc -l)" ] + [ 0 -eq "$(grep debug < "$log" | wc -l)" ] +} + +@test "log level - debug" { + log=work/immortalize.log + rm -f "$log" + ./work/immortalize \ + -max-lifetime 2 \ + -command test-bin/command-zero \ + -log-path "$log" \ + -log-level debug >&3 2>&1 + + [ 1 -lt "$(grep info < "$log" | wc -l)" ] + [ 0 -lt "$(grep debug < "$log" | wc -l)" ] +}