github.com/gorgonia/agogo@v0.1.1/mcts/debug.go (about)

     1  // +build debug
     2  
     3  package mcts
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  )
     9  
    10  type logstruct struct {
    11  	msg  string
    12  	args []interface{}
    13  }
    14  
    15  type lumberjack struct {
    16  	*bytes.Buffer
    17  	ch chan logstruct
    18  }
    19  
    20  func makeLumberJack() lumberjack {
    21  	return lumberjack{
    22  		Buffer: new(bytes.Buffer),
    23  		ch:     make(chan logstruct),
    24  	}
    25  }
    26  
    27  func (l *lumberjack) start() {
    28  	for s := range l.ch {
    29  		fmt.Fprintf(l.Buffer, s.msg, s.args...)
    30  		l.WriteByte('\n')
    31  	}
    32  }
    33  
    34  func (l *lumberjack) log(msg string, args ...interface{}) {
    35  	l.ch <- logstruct{msg: msg, args: args}
    36  }
    37  
    38  func (l *lumberjack) Reset() { l.Buffer.Reset() }
    39  
    40  func (l lumberjack) Log() string { return l.String() }