Skip to content

Commit c747c2a

Browse files
committed
Refine logger
1 parent 960fd68 commit c747c2a

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

logger/logger.go

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ var colorRed = "\033[31m"
9292
var colorBlack = "\033[0m"
9393

9494
func (v *loggerPlus) doPrintln(args ...interface{}) {
95-
if previousIo == nil {
95+
if previousCloser == nil {
9696
if v == Error {
9797
fmt.Fprintf(os.Stdout, colorRed)
9898
v.logger.Println(args...)
@@ -110,7 +110,7 @@ func (v *loggerPlus) doPrintln(args ...interface{}) {
110110
}
111111

112112
func (v *loggerPlus) doPrintf(format string, args ...interface{}) {
113-
if previousIo == nil {
113+
if previousCloser == nil {
114114
if v == Error {
115115
fmt.Fprintf(os.Stdout, colorRed)
116116
v.logger.Printf(format, args...)
@@ -191,26 +191,36 @@ type Logger interface {
191191
func init() {
192192
Info = NewLoggerPlus(log.New(ioutil.Discard, logInfoLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
193193
Trace = NewLoggerPlus(log.New(os.Stdout, logTraceLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
194-
Warn = NewLoggerPlus(log.New(os.Stdout, logWarnLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
195-
Error = NewLoggerPlus(log.New(os.Stdout, logErrorLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
194+
Warn = NewLoggerPlus(log.New(os.Stderr, logWarnLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
195+
Error = NewLoggerPlus(log.New(os.Stderr, logErrorLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
196+
197+
// init writer and closer.
198+
previousWriter = os.Stdout
199+
previousCloser = nil
196200
}
197201

198202
// Switch the underlayer io.
199203
// @remark user must close previous io for logger never close it.
200-
func Switch(w io.Writer) {
204+
func Switch(w io.Writer) io.Writer {
201205
// TODO: support level, default to trace here.
202206
Info = NewLoggerPlus(log.New(ioutil.Discard, logInfoLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
203207
Trace = NewLoggerPlus(log.New(w, logTraceLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
204208
Warn = NewLoggerPlus(log.New(w, logWarnLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
205209
Error = NewLoggerPlus(log.New(w, logErrorLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
206210

207-
if w, ok := w.(io.Closer); ok {
208-
previousIo = w
211+
ow := previousWriter
212+
previousWriter = w
213+
214+
if c, ok := w.(io.Closer); ok {
215+
previousCloser = c
209216
}
217+
218+
return ow
210219
}
211220

212221
// The previous underlayer io for logger.
213-
var previousIo io.Closer
222+
var previousCloser io.Closer
223+
var previousWriter io.Writer
214224

215225
// The interface io.Closer
216226
// Cleanup the logger, discard any log util switch to fresh writer.
@@ -220,9 +230,9 @@ func Close() (err error) {
220230
Warn = NewLoggerPlus(log.New(ioutil.Discard, logWarnLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
221231
Error = NewLoggerPlus(log.New(ioutil.Discard, logErrorLabel, log.Ldate|log.Ltime|log.Lmicroseconds))
222232

223-
if previousIo != nil {
224-
err = previousIo.Close()
225-
previousIo = nil
233+
if previousCloser != nil {
234+
err = previousCloser.Close()
235+
previousCloser = nil
226236
}
227237

228238
return

0 commit comments

Comments
 (0)