为什么Go自带的日志默认输出到os.Stderr? - 知乎 https://www.zhihu.com/question/67629357
Note that the Go runtime writes to standard error for panics and crashes; closing Stderr may cause those messages to go elsewhere, perhaps to a file opened later.
os - The Go Programming Language https://golang.org/pkg/os/
Variables
Portable analogs of some common system call errors.
Errors returned from this package may be tested against these errors with errors.Is.
var (
// ErrInvalid indicates an invalid argument.
// Methods on File will return this error when the receiver is nil.
ErrInvalid = errInvalid() // "invalid argument"
ErrPermission = errPermission() // "permission denied"
ErrExist = errExist() // "file already exists"
ErrNotExist = errNotExist() // "file does not exist"
ErrClosed = errClosed() // "file already closed"
ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
ErrDeadlineExceeded = errDeadlineExceeded() // "i/o timeout"
)
Stdin, Stdout, and Stderr are open Files pointing to the standard input, standard output, and standard error file descriptors.
Note that the Go runtime writes to standard error for panics and crashes; closing Stderr may cause those messages to go elsewhere, perhaps to a file opened later.
var (
Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)
Args hold the command-line arguments, starting with the program name.
var Args []string
proposal: os: Stdin, Stdout and Stderr should be interfaces · Issue #13473 · golang/go https://github.com/golang/go/issues/13473
Replacing os.Stdout/os.Stderr should redirect panic · Issue #325 · golang/go https://github.com/golang/go/issues/325
Capture os.Stdout
and/or os.Stderr
in Go
go-capturer/main.go at master · zenizh/go-capturer https://github.com/zenizh/go-capturer/blob/master/main.go