34 lines
492 B
Go
34 lines
492 B
Go
package batch
|
|
|
|
import (
|
|
j "encoding/json"
|
|
"io"
|
|
"os"
|
|
"sync"
|
|
|
|
"github.com/apex/log"
|
|
)
|
|
|
|
// Default handler outputting to stderr.
|
|
var Default = New(os.Stderr)
|
|
|
|
// Handler implementation.
|
|
type Handler struct {
|
|
*j.Encoder
|
|
mu sync.Mutex
|
|
}
|
|
|
|
// New handler.
|
|
func New(w io.Writer) *Handler {
|
|
return &Handler{
|
|
Encoder: j.NewEncoder(w),
|
|
}
|
|
}
|
|
|
|
// HandleLog implements log.Handler.
|
|
func (h *Handler) HandleLog(e *log.Entry) error {
|
|
h.mu.Lock()
|
|
defer h.mu.Unlock()
|
|
return h.Encoder.Encode(e)
|
|
}
|