+++ /dev/null
-package hclog
-
-import (
- "bytes"
- "strings"
-)
-
-// Provides a io.Writer to shim the data out of *log.Logger
-// and back into our Logger. This is basically the only way to
-// build upon *log.Logger.
-type stdlogAdapter struct {
- hl Logger
- inferLevels bool
-}
-
-// Take the data, infer the levels if configured, and send it through
-// a regular Logger
-func (s *stdlogAdapter) Write(data []byte) (int, error) {
- str := string(bytes.TrimRight(data, " \t\n"))
-
- if s.inferLevels {
- level, str := s.pickLevel(str)
- switch level {
- case Trace:
- s.hl.Trace(str)
- case Debug:
- s.hl.Debug(str)
- case Info:
- s.hl.Info(str)
- case Warn:
- s.hl.Warn(str)
- case Error:
- s.hl.Error(str)
- default:
- s.hl.Info(str)
- }
- } else {
- s.hl.Info(str)
- }
-
- return len(data), nil
-}
-
-// Detect, based on conventions, what log level this is
-func (s *stdlogAdapter) pickLevel(str string) (Level, string) {
- switch {
- case strings.HasPrefix(str, "[DEBUG]"):
- return Debug, strings.TrimSpace(str[7:])
- case strings.HasPrefix(str, "[TRACE]"):
- return Trace, strings.TrimSpace(str[7:])
- case strings.HasPrefix(str, "[INFO]"):
- return Info, strings.TrimSpace(str[6:])
- case strings.HasPrefix(str, "[WARN]"):
- return Warn, strings.TrimSpace(str[7:])
- case strings.HasPrefix(str, "[ERROR]"):
- return Error, strings.TrimSpace(str[7:])
- case strings.HasPrefix(str, "[ERR]"):
- return Error, strings.TrimSpace(str[5:])
- default:
- return Info, str
- }
-}