41
41
Usage : "Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail" ,
42
42
Value : 3 ,
43
43
}
44
+ logjsonFlag = cli.BoolFlag {
45
+ Name : "log.json" ,
46
+ Usage : "Format logs with JSON" ,
47
+ }
44
48
vmoduleFlag = cli.StringFlag {
45
49
Name : "vmodule" ,
46
50
Usage : "Per-module verbosity: comma-separated list of <pattern>=<level> (e.g. eth/*=5,p2p=4)" ,
@@ -114,7 +118,7 @@ var (
114
118
115
119
// Flags holds all command-line flags required for debugging.
116
120
var Flags = []cli.Flag {
117
- verbosityFlag , vmoduleFlag , backtraceAtFlag , debugFlag ,
121
+ verbosityFlag , logjsonFlag , vmoduleFlag , backtraceAtFlag , debugFlag ,
118
122
pprofFlag , pprofAddrFlag , pprofPortFlag , memprofilerateFlag ,
119
123
blockprofilerateFlag , cpuprofileFlag , traceFlag ,
120
124
}
@@ -124,24 +128,29 @@ var DeprecatedFlags = []cli.Flag{
124
128
legacyBlockprofilerateFlag , legacyCpuprofileFlag ,
125
129
}
126
130
127
- var (
128
- ostream log.Handler
129
- glogger * log.GlogHandler
130
- )
131
+ var glogger * log.GlogHandler
131
132
132
133
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 )
140
137
}
141
138
142
139
// Setup initializes profiling and logging based on the CLI flags.
143
140
// It should be called as early as possible in the program.
144
141
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 )
145
154
// logging
146
155
log .PrintOrigins (ctx .GlobalBool (debugFlag .Name ))
147
156
glogger .Verbosity (log .Lvl (ctx .GlobalInt (verbosityFlag .Name )))
0 commit comments