handler.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package log
  2. import (
  3. "io"
  4. )
  5. //Handler writes logs to somewhere
  6. type Handler interface {
  7. Write(p []byte) (n int, err error)
  8. Close() error
  9. }
  10. // StreamHandler writes logs to a specified io Writer, maybe stdout, stderr, etc...
  11. type StreamHandler struct {
  12. w io.Writer
  13. }
  14. // NewStreamHandler creates a StreamHandler
  15. func NewStreamHandler(w io.Writer) (*StreamHandler, error) {
  16. h := new(StreamHandler)
  17. h.w = w
  18. return h, nil
  19. }
  20. // Write implements Handler interface
  21. func (h *StreamHandler) Write(b []byte) (n int, err error) {
  22. return h.w.Write(b)
  23. }
  24. // Close implements Handler interface
  25. func (h *StreamHandler) Close() error {
  26. return nil
  27. }
  28. // NullHandler does nothing, it discards anything.
  29. type NullHandler struct {
  30. }
  31. // NewNullHandler creates a NullHandler
  32. func NewNullHandler() (*NullHandler, error) {
  33. return new(NullHandler), nil
  34. }
  35. // // Write implements Handler interface
  36. func (h *NullHandler) Write(b []byte) (n int, err error) {
  37. return len(b), nil
  38. }
  39. // Close implements Handler interface
  40. func (h *NullHandler) Close() error {
  41. return nil
  42. }