hclog_adapter.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package logger
  2. import (
  3. "io"
  4. "log"
  5. "github.com/hashicorp/go-hclog"
  6. "github.com/rs/zerolog"
  7. )
  8. type HCLogAdapter struct {
  9. hclog.Logger
  10. }
  11. func (l *HCLogAdapter) Log(level hclog.Level, msg string, args ...interface{}) {
  12. var ev *zerolog.Event
  13. switch level {
  14. case hclog.Info:
  15. ev = logger.Info()
  16. case hclog.Warn:
  17. ev = logger.Warn()
  18. case hclog.Error:
  19. ev = logger.Error()
  20. default:
  21. ev = logger.Debug()
  22. }
  23. ev.Timestamp().Str("sender", l.Name())
  24. addKeysAndValues(ev, args...)
  25. ev.Msg(msg)
  26. }
  27. func (l *HCLogAdapter) Trace(msg string, args ...interface{}) {
  28. l.Log(hclog.Debug, msg, args...)
  29. }
  30. func (l *HCLogAdapter) Debug(msg string, args ...interface{}) {
  31. l.Log(hclog.Debug, msg, args...)
  32. }
  33. func (l *HCLogAdapter) Info(msg string, args ...interface{}) {
  34. l.Log(hclog.Info, msg, args...)
  35. }
  36. func (l *HCLogAdapter) Warn(msg string, args ...interface{}) {
  37. l.Log(hclog.Warn, msg, args...)
  38. }
  39. func (l *HCLogAdapter) Error(msg string, args ...interface{}) {
  40. l.Log(hclog.Error, msg, args...)
  41. }
  42. func (l *HCLogAdapter) With(args ...interface{}) hclog.Logger {
  43. return &HCLogAdapter{Logger: l.Logger.With(args...)}
  44. }
  45. func (l *HCLogAdapter) Named(name string) hclog.Logger {
  46. return &HCLogAdapter{Logger: l.Logger.Named(name)}
  47. }
  48. func (l *HCLogAdapter) StandardLogger(opts *hclog.StandardLoggerOptions) *log.Logger {
  49. return log.New(&StdLoggerWrapper{Sender: l.Name()}, "", 0)
  50. }
  51. func (l *HCLogAdapter) StandardWriter(opts *hclog.StandardLoggerOptions) io.Writer {
  52. return &StdLoggerWrapper{Sender: l.Name()}
  53. }