Codebase list golang-github-vbauerster-mpb / 35c6d5b
drop debug log.Logger, write to debugOut directly Vladimir Bauer 4 years ago
2 changed file(s) with 24 addition(s) and 19 deletion(s). Raw diff Collapse all Expand all
44 "context"
55 "fmt"
66 "io"
7 "log"
87 "runtime/debug"
98 "strings"
109 "sync"
3534 cacheState *bState
3635
3736 container *Progress
38 dlogger *log.Logger
3937 recoveredPanic interface{}
4038 }
4139
8078 }
8179
8280 func newBar(container *Progress, bs *bState) *Bar {
83 logPrefix := fmt.Sprintf("%sbar#%02d ", container.dlogger.Prefix(), bs.id)
8481 ctx, cancel := context.WithCancel(container.ctx)
8582
8683 bar := &Bar{
9289 frameCh: make(chan *frame, 1),
9390 done: make(chan struct{}),
9491 cancel: cancel,
95 dlogger: log.New(bs.debugOut, logPrefix, log.Lshortfile),
9692 }
9793
9894 go bar.serve(ctx, bs)
345341 // recovering if user defined decorator panics for example
346342 if p := recover(); p != nil {
347343 if b.recoveredPanic == nil {
344 if s.debugOut != nil {
345 fmt.Fprintln(s.debugOut, p)
346 _, _ = s.debugOut.Write(debug.Stack())
347 }
348348 s.extender = makePanicExtender(p)
349349 b.toShutdown = !b.toShutdown
350350 b.recoveredPanic = p
351351 }
352352 reader, lines := s.extender(nil, s.reqWidth, stat)
353353 b.frameCh <- &frame{reader, lines + 1}
354 b.dlogger.Println(p)
355354 }
356355 s.completeFlushed = s.completed
357356 }()
558557
559558 func makePanicExtender(p interface{}) extenderFunc {
560559 pstr := fmt.Sprint(p)
561 stack := debug.Stack()
562 stackLines := bytes.Count(stack, []byte("\n"))
563560 return func(_ io.Reader, _ int, st decor.Statistics) (io.Reader, int) {
564561 mr := io.MultiReader(
565562 strings.NewReader(runewidth.Truncate(pstr, st.AvailableWidth, "…")),
566 strings.NewReader(fmt.Sprintf("\n%#v\n", st)),
567 bytes.NewReader(stack),
563 strings.NewReader("\n"),
568564 )
569 return mr, stackLines + 1
570 }
571 }
565 return mr, 0
566 }
567 }
55 "context"
66 "fmt"
77 "io"
8 "io/ioutil"
9 "log"
108 "math"
119 "os"
1210 "sync"
3230 done chan struct{}
3331 refreshCh chan time.Time
3432 once sync.Once
35 dlogger *log.Logger
3633 }
3734
3835 // pState holds bars in its priorityQueue. It gets passed to
7471 rr: prr,
7572 parkedBars: make(map[*Bar]*Bar),
7673 output: os.Stdout,
77 debugOut: ioutil.Discard,
7874 }
7975
8076 for _, opt := range options {
9086 bwg: new(sync.WaitGroup),
9187 operateState: make(chan func(*pState)),
9288 done: make(chan struct{}),
93 dlogger: log.New(s.debugOut, "[mpb] ", log.Lshortfile),
9489 }
9590
9691 p.cwg.Add(1)
233228 op(s)
234229 case <-p.refreshCh:
235230 if err := s.render(cw); err != nil {
236 p.dlogger.Println(err)
231 if s.debugOut != nil {
232 _, e := fmt.Fprintln(s.debugOut, err)
233 if e != nil {
234 panic(err)
235 }
236 } else {
237 panic(err)
238 }
237239 }
238240 case <-s.shutdownNotifier:
239241 for s.heapUpdated {
240242 if err := s.render(cw); err != nil {
241 p.dlogger.Println(err)
243 if s.debugOut != nil {
244 _, e := fmt.Fprintln(s.debugOut, err)
245 if e != nil {
246 panic(err)
247 }
248 } else {
249 panic(err)
250 }
242251 }
243252 }
244253 return