mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-18 18:17:03 +00:00
Reorganize logging
- Move the opening/closing of logs to the log package - Use conditional compilation for redirecting stdout/err to logfile, Unix allows a superior method to Windows - Panic output will now to go log file on Unix platforms
This commit is contained in:
37
log/stdout_windows.go
Normal file
37
log/stdout_windows.go
Normal file
@@ -0,0 +1,37 @@
|
||||
// +build windows
|
||||
|
||||
package log
|
||||
|
||||
import (
|
||||
"os"
|
||||
)
|
||||
|
||||
var stdOutsClosed = false
|
||||
|
||||
// closeStdin does nothing on Windows, it would always fail
|
||||
func closeStdin() {
|
||||
// Nop
|
||||
}
|
||||
|
||||
// reassignStdout points stdout/stderr to our logfile on systems that do not
|
||||
// support the Dup2 syscall
|
||||
func reassignStdout() {
|
||||
Tracef("Windows reassignStdout()")
|
||||
if !stdOutsClosed {
|
||||
// Close std* streams to prevent accidental output, they will be redirected to
|
||||
// our logfile below
|
||||
|
||||
// Warning: this will hide panic() output, sorry Windows users
|
||||
if err := os.Stderr.Close(); err != nil {
|
||||
// Not considered fatal
|
||||
Errorf("Failed to close os.Stderr during log setup")
|
||||
}
|
||||
if err := os.Stdin.Close(); err != nil {
|
||||
// Not considered fatal
|
||||
Errorf("Failed to close os.Stdin during log setup")
|
||||
}
|
||||
os.Stdout = logf
|
||||
os.Stderr = logf
|
||||
stdOutsClosed = true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user