Add ability to send log output to a file
Using PACKER_LOG=1 causes all the log output to be sent to Stderr. This change maintains that backward compatility. Anything other than "1" will be treated as a filename which will have logging appended to that file. This is useful, for example, to always have debugging available without cluttering up stdout (and without having to redirect stderr all the time).
This commit is contained in:
parent
0fdf9b09c9
commit
1c062aee61
19
packer.go
19
packer.go
|
@ -14,12 +14,25 @@ import (
|
|||
)
|
||||
|
||||
func main() {
|
||||
if os.Getenv("PACKER_LOG") == "" {
|
||||
switch packer_log := os.Getenv("PACKER_LOG"); packer_log {
|
||||
case "":
|
||||
// If we don't have logging explicitly enabled, then disable it
|
||||
log.SetOutput(ioutil.Discard)
|
||||
} else {
|
||||
// Logging is enabled, make sure it goes to stderr
|
||||
case "1":
|
||||
// Legacy logging is enabled, make sure it goes to stderr
|
||||
log.SetOutput(os.Stderr)
|
||||
default:
|
||||
{
|
||||
// Use a file for logging
|
||||
file, err := os.OpenFile(packer_log, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0600)
|
||||
if err == nil {
|
||||
log.SetOutput(file)
|
||||
} else {
|
||||
// Problem opening the file, fail back to Stderr
|
||||
log.SetOutput(os.Stderr)
|
||||
log.Printf("Could not open %s for logging (%s). Using stderr instead.", packer_log, err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If there is no explicit number of Go threads to use, then set it
|
||||
|
|
Loading…
Reference in New Issue