|
|
|
@ -23,6 +23,7 @@ import ( |
|
|
|
|
"os" |
|
|
|
|
"os/signal" |
|
|
|
|
"regexp" |
|
|
|
|
"runtime" |
|
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common" |
|
|
|
|
"github.com/ethereum/go-ethereum/core" |
|
|
|
@ -52,10 +53,16 @@ func openLogFile(Datadir string, filename string) *os.File { |
|
|
|
|
// is redirected to a different file.
|
|
|
|
|
func Fatalf(format string, args ...interface{}) { |
|
|
|
|
w := io.MultiWriter(os.Stdout, os.Stderr) |
|
|
|
|
outf, _ := os.Stdout.Stat() |
|
|
|
|
errf, _ := os.Stderr.Stat() |
|
|
|
|
if outf != nil && errf != nil && os.SameFile(outf, errf) { |
|
|
|
|
w = os.Stderr |
|
|
|
|
if runtime.GOOS == "windows" { |
|
|
|
|
// The SameFile check below doesn't work on Windows.
|
|
|
|
|
// stdout is unlikely to get redirected though, so just print there.
|
|
|
|
|
w = os.Stdout |
|
|
|
|
} else { |
|
|
|
|
outf, _ := os.Stdout.Stat() |
|
|
|
|
errf, _ := os.Stderr.Stat() |
|
|
|
|
if outf != nil && errf != nil && os.SameFile(outf, errf) { |
|
|
|
|
w = os.Stderr |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
fmt.Fprintf(w, "Fatal: "+format+"\n", args...) |
|
|
|
|
logger.Flush() |
|
|
|
|