file.go 623 B

1234567891011121314151617181920212223242526272829303132333435
  1. package querylog
  2. import (
  3. "encoding/json"
  4. "gopkg.in/natefinch/lumberjack.v2"
  5. )
  6. type FileLogger struct {
  7. logger lumberjack.Logger
  8. }
  9. func NewFileLogger(filename string, maxsize int, keep int) (*FileLogger, error) {
  10. fl := &FileLogger{}
  11. fl.logger = lumberjack.Logger{
  12. Filename: filename,
  13. MaxSize: maxsize, // megabytes
  14. MaxBackups: keep,
  15. }
  16. return fl, nil
  17. }
  18. func (l *FileLogger) Write(e *Entry) error {
  19. js, err := json.Marshal(e)
  20. if err != nil {
  21. return err
  22. }
  23. js = append(js, []byte("\n")...)
  24. _, err = l.logger.Write(js)
  25. return err
  26. }
  27. func (l *FileLogger) Close() error {
  28. return l.logger.Close()
  29. }