Add functions for structured progress logging
This commit is contained in:
@@ -60,15 +60,25 @@ func New(w io.Writer) *Handler {
|
||||
}
|
||||
}
|
||||
|
||||
// HandleLog implements log.Handler.
|
||||
func (h *Handler) HandleLog(e *log.Entry) error {
|
||||
// TypedLog is used for handling special "typed" logs to the CLI
|
||||
func (h *Handler) TypedLog(t string, e *log.Entry) error {
|
||||
switch t {
|
||||
case "progress":
|
||||
// XXX replace this with something more fancy like https://github.com/tj/go-progress
|
||||
fmt.Fprintf(h.Writer, "%.1f%% [%s]: %s", e.Fields.Get("percentage").(float64)*100, e.Fields.Get("key"), e.Message)
|
||||
fmt.Fprintln(h.Writer)
|
||||
return nil
|
||||
default:
|
||||
return h.DefaultLog(e)
|
||||
}
|
||||
}
|
||||
|
||||
// DefaultLog is the default way of printing out logs
|
||||
func (h *Handler) DefaultLog(e *log.Entry) error {
|
||||
color := Colors[e.Level]
|
||||
level := Strings[e.Level]
|
||||
names := e.Fields.Names()
|
||||
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
|
||||
color.Fprintf(h.Writer, "%s %-25s", bold.Sprintf("%*s", h.Padding+1, level), e.Message)
|
||||
|
||||
for _, name := range names {
|
||||
@@ -82,3 +92,16 @@ func (h *Handler) HandleLog(e *log.Entry) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// HandleLog implements log.Handler.
|
||||
func (h *Handler) HandleLog(e *log.Entry) error {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
|
||||
t, isTyped := e.Fields["type"].(string)
|
||||
if isTyped {
|
||||
return h.TypedLog(t, e)
|
||||
}
|
||||
|
||||
return h.DefaultLog(e)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user