123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package logger
- import (
- "io"
- "log"
- "github.com/hashicorp/go-hclog"
- )
- // HCLogAdapter is an adapter for hclog.Logger
- type HCLogAdapter struct {
- hclog.Logger
- }
- // Log emits a message and key/value pairs at a provided log level
- func (l *HCLogAdapter) Log(level hclog.Level, msg string, args ...interface{}) {
- logger.LogWithKeyVals(level, l.Name(), msg, args...)
- }
- // Trace emits a message and key/value pairs at the TRACE level
- func (l *HCLogAdapter) Trace(msg string, args ...interface{}) {
- l.Log(hclog.Debug, msg, args...)
- }
- // Debug emits a message and key/value pairs at the DEBUG level
- func (l *HCLogAdapter) Debug(msg string, args ...interface{}) {
- l.Log(hclog.Debug, msg, args...)
- }
- // Info emits a message and key/value pairs at the INFO level
- func (l *HCLogAdapter) Info(msg string, args ...interface{}) {
- l.Log(hclog.Info, msg, args...)
- }
- // Warn emits a message and key/value pairs at the WARN level
- func (l *HCLogAdapter) Warn(msg string, args ...interface{}) {
- l.Log(hclog.Warn, msg, args...)
- }
- // Error emits a message and key/value pairs at the ERROR level
- func (l *HCLogAdapter) Error(msg string, args ...interface{}) {
- l.Log(hclog.Error, msg, args...)
- }
- // With creates a sub-logger
- func (l *HCLogAdapter) With(args ...interface{}) hclog.Logger {
- return &HCLogAdapter{Logger: l.Logger.With(args...)}
- }
- // Named creates a logger that will prepend the name string on the front of all messages
- func (l *HCLogAdapter) Named(name string) hclog.Logger {
- return &HCLogAdapter{Logger: l.Logger.Named(name)}
- }
- // StandardLogger returns a value that conforms to the stdlib log.Logger interface
- func (l *HCLogAdapter) StandardLogger(opts *hclog.StandardLoggerOptions) *log.Logger {
- return log.New(&StdLoggerWrapper{Sender: l.Name()}, "", 0)
- }
- // StandardWriter returns a value that conforms to io.Writer, which can be passed into log.SetOutput()
- func (l *HCLogAdapter) StandardWriter(opts *hclog.StandardLoggerOptions) io.Writer {
- return &StdLoggerWrapper{Sender: l.Name()}
- }
- // StdLoggerWrapper is a wrapper for standard logger compatibility
- type StdLoggerWrapper struct {
- Sender string
- }
- // Write implements the io.Writer interface. This is useful to set as a writer
- // for the standard library log.
- func (l *StdLoggerWrapper) Write(p []byte) (n int, err error) {
- n = len(p)
- if n > 0 && p[n-1] == '\n' {
- // Trim CR added by stdlog.
- p = p[0 : n-1]
- }
- logger.Log(hclog.Error, l.Sender, "", string(p))
- return
- }
|