Skip to content

Commit 2778667

Browse files
authored
internal/debug: add switch to format logs with json (ethereum#22207)
adds a flag --log.json which if enabled makes the client format logs with JSON.
1 parent 2fdba3a commit 2778667

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

internal/debug/flags.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ var (
4141
Usage: "Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail",
4242
Value: 3,
4343
}
44+
logjsonFlag = cli.BoolFlag{
45+
Name: "log.json",
46+
Usage: "Format logs with JSON",
47+
}
4448
vmoduleFlag = cli.StringFlag{
4549
Name: "vmodule",
4650
Usage: "Per-module verbosity: comma-separated list of <pattern>=<level> (e.g. eth/*=5,p2p=4)",
@@ -114,7 +118,7 @@ var (
114118

115119
// Flags holds all command-line flags required for debugging.
116120
var Flags = []cli.Flag{
117-
verbosityFlag, vmoduleFlag, backtraceAtFlag, debugFlag,
121+
verbosityFlag, logjsonFlag, vmoduleFlag, backtraceAtFlag, debugFlag,
118122
pprofFlag, pprofAddrFlag, pprofPortFlag, memprofilerateFlag,
119123
blockprofilerateFlag, cpuprofileFlag, traceFlag,
120124
}
@@ -124,24 +128,29 @@ var DeprecatedFlags = []cli.Flag{
124128
legacyBlockprofilerateFlag, legacyCpuprofileFlag,
125129
}
126130

127-
var (
128-
ostream log.Handler
129-
glogger *log.GlogHandler
130-
)
131+
var glogger *log.GlogHandler
131132

132133
func init() {
133-
usecolor := (isatty.IsTerminal(os.Stderr.Fd()) || isatty.IsCygwinTerminal(os.Stderr.Fd())) && os.Getenv("TERM") != "dumb"
134-
output := io.Writer(os.Stderr)
135-
if usecolor {
136-
output = colorable.NewColorableStderr()
137-
}
138-
ostream = log.StreamHandler(output, log.TerminalFormat(usecolor))
139-
glogger = log.NewGlogHandler(ostream)
134+
glogger = log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
135+
glogger.Verbosity(log.LvlInfo)
136+
log.Root().SetHandler(glogger)
140137
}
141138

142139
// Setup initializes profiling and logging based on the CLI flags.
143140
// It should be called as early as possible in the program.
144141
func Setup(ctx *cli.Context) error {
142+
var ostream log.Handler
143+
output := io.Writer(os.Stderr)
144+
if ctx.GlobalBool(logjsonFlag.Name) {
145+
ostream = log.StreamHandler(output, log.JSONFormat())
146+
} else {
147+
usecolor := (isatty.IsTerminal(os.Stderr.Fd()) || isatty.IsCygwinTerminal(os.Stderr.Fd())) && os.Getenv("TERM") != "dumb"
148+
if usecolor {
149+
output = colorable.NewColorableStderr()
150+
}
151+
ostream = log.StreamHandler(output, log.TerminalFormat(usecolor))
152+
}
153+
glogger.SetHandler(ostream)
145154
// logging
146155
log.PrintOrigins(ctx.GlobalBool(debugFlag.Name))
147156
glogger.Verbosity(log.Lvl(ctx.GlobalInt(verbosityFlag.Name)))

0 commit comments

Comments
 (0)