aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-02-28 00:05:50 +0800
committerGitHub <noreply@github.com>2017-02-28 00:05:50 +0800
commit48bc07ae976a7940f75adaa68a4ea3887f5fad6c (patch)
treecf19edb8ed153797edc8da7772f6d7f0671c410b
parente8b3e226124d2b0234c36ef2ca9221dc95c56a1a (diff)
parentd0eba23af373bb54b00b242ccee4239fc9afd873 (diff)
downloaddexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.tar
dexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.tar.gz
dexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.tar.bz2
dexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.tar.lz
dexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.tar.xz
dexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.tar.zst
dexon-48bc07ae976a7940f75adaa68a4ea3887f5fad6c.zip
Merge pull request #3708 from fjl/log-letter
log: fix annoyances
-rw-r--r--cmd/bootnode/main.go2
-rw-r--r--cmd/evm/main.go2
-rw-r--r--cmd/wnode/main.go2
-rw-r--r--eth/protocol_test.go2
-rw-r--r--internal/debug/flags.go17
-rw-r--r--log/format.go36
-rw-r--r--log/logger.go22
-rw-r--r--log/root.go16
-rw-r--r--mobile/init.go2
-rw-r--r--mobile/logger.go2
-rw-r--r--p2p/server_test.go2
-rw-r--r--swarm/network/syncdb_test.go2
-rw-r--r--tests/util.go2
13 files changed, 64 insertions, 45 deletions
diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go
index c3fc163a1..a5e82d145 100644
--- a/cmd/bootnode/main.go
+++ b/cmd/bootnode/main.go
@@ -50,7 +50,7 @@ func main() {
)
flag.Parse()
- glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat()))
+ glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
glogger.Verbosity(log.Lvl(*verbosity))
glogger.Vmodule(*vmodule)
log.Root().SetHandler(glogger)
diff --git a/cmd/evm/main.go b/cmd/evm/main.go
index a489efbfc..601e62f77 100644
--- a/cmd/evm/main.go
+++ b/cmd/evm/main.go
@@ -112,7 +112,7 @@ func init() {
}
func run(ctx *cli.Context) error {
- glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat()))
+ glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
glogger.Verbosity(log.Lvl(ctx.GlobalInt(VerbosityFlag.Name)))
log.Root().SetHandler(glogger)
diff --git a/cmd/wnode/main.go b/cmd/wnode/main.go
index 8191f9292..82d7eda3c 100644
--- a/cmd/wnode/main.go
+++ b/cmd/wnode/main.go
@@ -152,7 +152,7 @@ func echo() {
}
func initialize() {
- log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*argVerbosity), log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*argVerbosity), log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
done = make(chan struct{})
var peers []*discover.Node
diff --git a/eth/protocol_test.go b/eth/protocol_test.go
index c0458f2be..43f336c32 100644
--- a/eth/protocol_test.go
+++ b/eth/protocol_test.go
@@ -30,7 +30,7 @@ import (
)
func init() {
- // log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ // log.Root().SetHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
}
var testAccount, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
diff --git a/internal/debug/flags.go b/internal/debug/flags.go
index 29d1f3388..f95251939 100644
--- a/internal/debug/flags.go
+++ b/internal/debug/flags.go
@@ -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))
diff --git a/log/format.go b/log/format.go
index 2a3790501..f32fcf744 100644
--- a/log/format.go
+++ b/log/format.go
@@ -69,26 +69,28 @@ func (f formatFunc) Format(r *Record) []byte {
//
// [May 16 20:58:45] [DBUG] remove route ns=haproxy addr=127.0.0.1:50002
//
-func TerminalFormat() Format {
+func TerminalFormat(usecolor bool) Format {
return FormatFunc(func(r *Record) []byte {
var color = 0
- switch r.Lvl {
- case LvlCrit:
- color = 35
- case LvlError:
- color = 31
- case LvlWarn:
- color = 33
- case LvlInfo:
- color = 32
- case LvlDebug:
- color = 36
- case LvlTrace:
- color = 34
+ if usecolor {
+ switch r.Lvl {
+ case LvlCrit:
+ color = 35
+ case LvlError:
+ color = 31
+ case LvlWarn:
+ color = 33
+ case LvlInfo:
+ color = 32
+ case LvlDebug:
+ color = 36
+ case LvlTrace:
+ color = 34
+ }
}
b := &bytes.Buffer{}
- lvl := strings.ToUpper(r.Lvl.String())
+ lvl := r.Lvl.AlignedString()
if atomic.LoadUint32(&locationEnabled) != 0 {
// Log origin printing was requested, format the location path and line number
location := fmt.Sprintf("%+v", r.Call)
@@ -107,13 +109,13 @@ func TerminalFormat() Format {
if color > 0 {
fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s|%s]%s %s ", color, lvl, r.Time.Format(termTimeFormat), location, padding, r.Msg)
} else {
- fmt.Fprintf(b, "[%s] [%s|%s]%s %s ", lvl, r.Time.Format(termTimeFormat), location, padding, r.Msg)
+ fmt.Fprintf(b, "%s[%s|%s]%s %s ", lvl, r.Time.Format(termTimeFormat), location, padding, r.Msg)
}
} else {
if color > 0 {
fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %s ", color, lvl, r.Time.Format(termTimeFormat), r.Msg)
} else {
- fmt.Fprintf(b, "[%s] [%s] %s ", lvl, r.Time.Format(termTimeFormat), r.Msg)
+ fmt.Fprintf(b, "%s[%s] %s ", lvl, r.Time.Format(termTimeFormat), r.Msg)
}
}
// try to justify the log output for short messages
diff --git a/log/logger.go b/log/logger.go
index a7f7d9df7..15c83a9b2 100644
--- a/log/logger.go
+++ b/log/logger.go
@@ -24,7 +24,27 @@ const (
LvlTrace
)
-// Returns the name of a Lvl
+// Aligned returns a 5-character string containing the name of a Lvl.
+func (l Lvl) AlignedString() string {
+ switch l {
+ case LvlTrace:
+ return "TRACE"
+ case LvlDebug:
+ return "DEBUG"
+ case LvlInfo:
+ return "INFO "
+ case LvlWarn:
+ return "WARN "
+ case LvlError:
+ return "ERROR"
+ case LvlCrit:
+ return "CRIT "
+ default:
+ panic("bad level")
+ }
+}
+
+// Strings returns the name of a Lvl.
func (l Lvl) String() string {
switch l {
case LvlTrace:
diff --git a/log/root.go b/log/root.go
index 12afbf8b7..71b8cef6d 100644
--- a/log/root.go
+++ b/log/root.go
@@ -2,28 +2,16 @@ package log
import (
"os"
-
- "github.com/ethereum/go-ethereum/log/term"
- "github.com/mattn/go-colorable"
)
var (
- root *logger
+ root = &logger{[]interface{}{}, new(swapHandler)}
StdoutHandler = StreamHandler(os.Stdout, LogfmtFormat())
StderrHandler = StreamHandler(os.Stderr, LogfmtFormat())
)
func init() {
- if term.IsTty(os.Stdout.Fd()) {
- StdoutHandler = StreamHandler(colorable.NewColorableStdout(), TerminalFormat())
- }
-
- if term.IsTty(os.Stderr.Fd()) {
- StderrHandler = StreamHandler(colorable.NewColorableStderr(), TerminalFormat())
- }
-
- root = &logger{[]interface{}{}, new(swapHandler)}
- root.SetHandler(LvlFilterHandler(LvlInfo, StdoutHandler))
+ root.SetHandler(DiscardHandler())
}
// New returns a new logger with the given context.
diff --git a/mobile/init.go b/mobile/init.go
index d7acc14ce..2025d85ed 100644
--- a/mobile/init.go
+++ b/mobile/init.go
@@ -27,7 +27,7 @@ import (
func init() {
// Initialize the logger
- log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ log.Root().SetHandler(log.LvlFilterHandler(log.LvlInfo, log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
// Initialize the goroutine count
runtime.GOMAXPROCS(runtime.NumCPU())
diff --git a/mobile/logger.go b/mobile/logger.go
index 9f24b3279..7078c4fd2 100644
--- a/mobile/logger.go
+++ b/mobile/logger.go
@@ -24,5 +24,5 @@ import (
// SetVerbosity sets the global verbosity level (between 0 and 6 - see logger/verbosity.go).
func SetVerbosity(level int) {
- log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(level), log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(level), log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
}
diff --git a/p2p/server_test.go b/p2p/server_test.go
index 46611c7d0..971faf002 100644
--- a/p2p/server_test.go
+++ b/p2p/server_test.go
@@ -31,7 +31,7 @@ import (
)
func init() {
- // log.Root().SetHandler(log.LvlFilterHandler(log.LvlError, log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ // log.Root().SetHandler(log.LvlFilterHandler(log.LvlError, log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
}
type testTransport struct {
diff --git a/swarm/network/syncdb_test.go b/swarm/network/syncdb_test.go
index a9417e1d4..be21d156f 100644
--- a/swarm/network/syncdb_test.go
+++ b/swarm/network/syncdb_test.go
@@ -31,7 +31,7 @@ import (
)
func init() {
- log.Root().SetHandler(log.LvlFilterHandler(log.LvlCrit, log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ log.Root().SetHandler(log.LvlFilterHandler(log.LvlCrit, log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
}
type testSyncDb struct {
diff --git a/tests/util.go b/tests/util.go
index ce5b02fed..78bb06d06 100644
--- a/tests/util.go
+++ b/tests/util.go
@@ -41,7 +41,7 @@ var (
)
func init() {
- log.Root().SetHandler(log.LvlFilterHandler(log.LvlCrit, log.StreamHandler(os.Stderr, log.TerminalFormat())))
+ log.Root().SetHandler(log.LvlFilterHandler(log.LvlCrit, log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
if os.Getenv("JITVM") == "true" {
ForceJit = true
EnableJit = true