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)
|
||
|
}
|