diff --git a/log.go b/helper/logging/logging.go similarity index 88% rename from log.go rename to helper/logging/logging.go index 1077c3e55..b8de7a37f 100644 --- a/log.go +++ b/helper/logging/logging.go @@ -1,7 +1,8 @@ -package main +package logging import ( "io" + "io/ioutil" "log" "os" "strings" @@ -18,9 +19,9 @@ const ( var validLevels = []logutils.LogLevel{"TRACE", "DEBUG", "INFO", "WARN", "ERROR"} -// logOutput determines where we should send logs (if anywhere) and the log level. -func logOutput() (logOutput io.Writer, err error) { - logOutput = nil +// LogOutput determines where we should send logs (if anywhere) and the log level. +func LogOutput() (logOutput io.Writer, err error) { + logOutput = ioutil.Discard envLevel := os.Getenv(EnvLog) if envLevel == "" { return diff --git a/helper/resource/testing.go b/helper/resource/testing.go index 0b53c3c61..18a40553b 100644 --- a/helper/resource/testing.go +++ b/helper/resource/testing.go @@ -13,6 +13,7 @@ import ( "github.com/hashicorp/go-getter" "github.com/hashicorp/terraform/config/module" + "github.com/hashicorp/terraform/helper/logging" "github.com/hashicorp/terraform/terraform" ) @@ -103,6 +104,12 @@ func Test(t TestT, c TestCase) { return } + logWriter, err := logging.LogOutput() + if err != nil { + t.Error(fmt.Errorf("error setting up logging: %s", err)) + } + log.SetOutput(logWriter) + // We require verbose mode so that the user knows what is going on. if !testTesting && !testing.Verbose() { t.Fatal("Acceptance tests must be run with the -v flag on tests") diff --git a/main.go b/main.go index 168583107..da71456d5 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "os" "sync" + "github.com/hashicorp/terraform/helper/logging" "github.com/hashicorp/terraform/plugin" "github.com/mitchellh/cli" "github.com/mitchellh/panicwrap" @@ -23,14 +24,11 @@ func realMain() int { if !panicwrap.Wrapped(&wrapConfig) { // Determine where logs should go in general (requested by the user) - logWriter, err := logOutput() + logWriter, err := logging.LogOutput() if err != nil { fmt.Fprintf(os.Stderr, "Couldn't setup log output: %s", err) return 1 } - if logWriter == nil { - logWriter = ioutil.Discard - } // We always send logs to a temporary file that we use in case // there is a panic. Otherwise, we delete it. @@ -42,10 +40,6 @@ func realMain() int { defer os.Remove(logTempFile.Name()) defer logTempFile.Close() - // Tell the logger to log to this file - os.Setenv(EnvLog, "") - os.Setenv(EnvLogFile, "") - // Setup the prefixed readers that send data properly to // stdout/stderr. doneCh := make(chan struct{})