1package hclog
2
3import (
4	"io"
5	"io/ioutil"
6	"log"
7)
8
9// NewNullLogger instantiates a Logger for which all calls
10// will succeed without doing anything.
11// Useful for testing purposes.
12func NewNullLogger() Logger {
13	return &nullLogger{}
14}
15
16type nullLogger struct{}
17
18func (l *nullLogger) Log(level Level, msg string, args ...interface{}) {}
19
20func (l *nullLogger) Trace(msg string, args ...interface{}) {}
21
22func (l *nullLogger) Debug(msg string, args ...interface{}) {}
23
24func (l *nullLogger) Info(msg string, args ...interface{}) {}
25
26func (l *nullLogger) Warn(msg string, args ...interface{}) {}
27
28func (l *nullLogger) Error(msg string, args ...interface{}) {}
29
30func (l *nullLogger) IsTrace() bool { return false }
31
32func (l *nullLogger) IsDebug() bool { return false }
33
34func (l *nullLogger) IsInfo() bool { return false }
35
36func (l *nullLogger) IsWarn() bool { return false }
37
38func (l *nullLogger) IsError() bool { return false }
39
40func (l *nullLogger) ImpliedArgs() []interface{} { return []interface{}{} }
41
42func (l *nullLogger) With(args ...interface{}) Logger { return l }
43
44func (l *nullLogger) Name() string { return "" }
45
46func (l *nullLogger) Named(name string) Logger { return l }
47
48func (l *nullLogger) ResetNamed(name string) Logger { return l }
49
50func (l *nullLogger) SetLevel(level Level) {}
51
52func (l *nullLogger) StandardLogger(opts *StandardLoggerOptions) *log.Logger {
53	return log.New(l.StandardWriter(opts), "", log.LstdFlags)
54}
55
56func (l *nullLogger) StandardWriter(opts *StandardLoggerOptions) io.Writer {
57	return ioutil.Discard
58}
59