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.
116120var 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
132133func 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.
144141func 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