@@ -5,20 +5,37 @@ import (
55 hclog "github.com/hashicorp/go-hclog"
66)
77
8+ type Level int32
9+
10+ const (
11+ NoLevel Level = iota
12+ Trace
13+ Debug
14+ Info
15+ Warn
16+ Error
17+ )
18+
819// Logger is the main Logger interface.
920type Logger interface {
1021 Debug (msg string , args ... interface {})
1122 Info (msg string , args ... interface {})
1223 Warn (msg string , args ... interface {})
1324 Error (msg string , args ... interface {})
25+ Level () Level
1426}
1527
1628// New creates a new logger.
1729func New () Logger {
30+ return NewWithLevel (Debug )
31+ }
32+
33+ // NewWithLevel creates a new logger at the Level defined.
34+ func NewWithLevel (level Level ) Logger {
1835 return & hclogWrapper {
1936 logger : hclog .New (& hclog.LoggerOptions {
2037 // Use debug as level since anything less severe is suppressed.
21- Level : hclog .Debug ,
38+ Level : hclog .Level ( level ) ,
2239 // Use JSON format to make the output in Grafana format and work
2340 // when using multiple arguments such as Debug("message", "key", "value").
2441 JSONFormat : true ,
@@ -46,5 +63,24 @@ func (l *hclogWrapper) Error(msg string, args ...interface{}) {
4663 l .logger .Error (msg , args ... )
4764}
4865
66+ func (l * hclogWrapper ) Level () Level {
67+ if l .logger .IsDebug () {
68+ return Debug
69+ }
70+ if l .logger .IsTrace () {
71+ return Trace
72+ }
73+ if l .logger .IsInfo () {
74+ return Info
75+ }
76+ if l .logger .IsWarn () {
77+ return Warn
78+ }
79+ if l .logger .IsError () {
80+ return Error
81+ }
82+ return NoLevel
83+ }
84+
4985// DefaultLogger is the default logger.
5086var DefaultLogger = New ()
0 commit comments