In shell, I use go run file > output
, but only fmt.Print are saved into output. All the log.Print still output to the screen! And after I searched on the Internet, I found I can set ouput directory for log, but how can I save both log and fmt in the same file?
Asked
Active
Viewed 1,015 times
2

Haoyuan Ge
- 3,379
- 3
- 24
- 40
-
1Possible duplicate of [How can I redirect and append both stdout and stderr to a file with Bash?](http://stackoverflow.com/questions/876239/how-can-i-redirect-and-append-both-stdout-and-stderr-to-a-file-with-bash) – Ainar-G Dec 15 '15 at 16:21
1 Answers
6
The logger writes to STDERR while fmt.PrintXXX functions write to STDOUT.
You have two choices:
1) Capture STDERR to the file.
Bash like shells use:
go run file > output 2>&1
2) Set the logger's Output to os.Stdout
Then you run like normal go run file > output
and both the logger and fmt go to the same place.
log.SetOutput(os.StdOut)

David Budworth
- 11,248
- 1
- 36
- 45