|
|
@@ -18,12 +18,15 @@ package debug
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
+ "io"
|
|
|
"net/http"
|
|
|
_ "net/http/pprof"
|
|
|
"os"
|
|
|
"runtime"
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/log"
|
|
|
+ "github.com/ethereum/go-ethereum/log/term"
|
|
|
+ colorable "github.com/mattn/go-colorable"
|
|
|
"gopkg.in/urfave/cli.v1"
|
|
|
)
|
|
|
|
|
|
@@ -87,16 +90,22 @@ var Flags = []cli.Flag{
|
|
|
memprofilerateFlag, blockprofilerateFlag, cpuprofileFlag, traceFlag,
|
|
|
}
|
|
|
|
|
|
-// glogger is the glog handler used by Geth, allowing the debug APIs to modify
|
|
|
-// verbosity levels, vmodules and backtrace locations.
|
|
|
-var glogger = log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat()))
|
|
|
+var glogger *log.GlogHandler
|
|
|
+
|
|
|
+func init() {
|
|
|
+ usecolor := term.IsTty(os.Stderr.Fd()) && os.Getenv("TERM") != "dumb"
|
|
|
+ output := io.Writer(os.Stderr)
|
|
|
+ if usecolor {
|
|
|
+ output = colorable.NewColorableStderr()
|
|
|
+ }
|
|
|
+ glogger = log.NewGlogHandler(log.StreamHandler(output, log.TerminalFormat(usecolor)))
|
|
|
+}
|
|
|
|
|
|
// Setup initializes profiling and logging based on the CLI flags.
|
|
|
// It should be called as early as possible in the program.
|
|
|
func Setup(ctx *cli.Context) error {
|
|
|
// logging
|
|
|
log.PrintOrigins(ctx.GlobalBool(debugFlag.Name))
|
|
|
-
|
|
|
glogger.Verbosity(log.Lvl(ctx.GlobalInt(verbosityFlag.Name)))
|
|
|
glogger.Vmodule(ctx.GlobalString(vmoduleFlag.Name))
|
|
|
glogger.BacktraceAt(ctx.GlobalString(backtraceAtFlag.Name))
|