Description
What version of Go are you using (go version
)?
$ go version go version go1.13.1 linux/amd64
Does this issue reproduce with the latest release?
yes.
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go envnot relevant
What did you do?
I've just enabled the gctrace and found all the debug logs are sent to stderr by print function.
src/runtime/mgc.go:
if debug.gctrace > 0 {
printlock()
print("gc ", memstats.numgc,
" @", string(itoaDiv(sbuf[:], uint64(work.tSweepTerm-runtimeInitTime)/1e6, 3)), "s ",
util, "%: ")
// write to goroutine-local buffer if diverting output,
// or else standard error.
func gwrite(b []byte) {
if len(b) == 0 {
return
}
recordForPanic(b)
gp := getg()
// Don't use the writebuf if gp.m is dying. We want anything
// written through gwrite to appear in the terminal rather
// than be written to in some buffer, if we're in a panicking state.
// Note that we can't just clear writebuf in the gp.m.dying case
// because a panic isn't allowed to have any write barriers.
if gp == nil || gp.writebuf == nil || gp.m.dying > 0 {
writeErr(b)
return
}
n := copy(gp.writebuf[len(gp.writebuf):cap(gp.writebuf)], b)
gp.writebuf = gp.writebuf[:len(gp.writebuf)+n]
}
What did you expect to see?
i'm happy to see the debug logs puts to stdout with some debug flag like:
debug.out=1
What did you see instead?
all debug logs were treated as error by log server.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status