1package oonimkall
2
3import (
4	"fmt"
5
6	"github.com/ooni/probe-cli/v3/internal/engine/model"
7)
8
9type loggerVerbose struct {
10	Logger
11}
12
13func (slv loggerVerbose) Debugf(format string, v ...interface{}) {
14	slv.Debug(fmt.Sprintf(format, v...))
15}
16func (slv loggerVerbose) Infof(format string, v ...interface{}) {
17	slv.Info(fmt.Sprintf(format, v...))
18}
19func (slv loggerVerbose) Warnf(format string, v ...interface{}) {
20	slv.Warn(fmt.Sprintf(format, v...))
21}
22
23type loggerNormal struct {
24	Logger
25}
26
27func (sln loggerNormal) Debugf(format string, v ...interface{}) {
28	// nothing
29}
30func (sln loggerNormal) Debug(msg string) {
31	// nothing
32}
33func (sln loggerNormal) Infof(format string, v ...interface{}) {
34	sln.Info(fmt.Sprintf(format, v...))
35}
36func (sln loggerNormal) Warnf(format string, v ...interface{}) {
37	sln.Warn(fmt.Sprintf(format, v...))
38}
39
40type loggerQuiet struct{}
41
42func (loggerQuiet) Debugf(format string, v ...interface{}) {
43	// nothing
44}
45func (loggerQuiet) Debug(msg string) {
46	// nothing
47}
48func (loggerQuiet) Infof(format string, v ...interface{}) {
49	// nothing
50}
51func (loggerQuiet) Info(msg string) {
52	// nothing
53}
54func (loggerQuiet) Warnf(format string, v ...interface{}) {
55	// nothing
56}
57func (loggerQuiet) Warn(msg string) {
58	// nothing
59}
60
61func newLogger(logger Logger, verbose bool) model.Logger {
62	if logger == nil {
63		return loggerQuiet{}
64	}
65	if verbose {
66		return loggerVerbose{Logger: logger}
67	}
68	return loggerNormal{Logger: logger}
69}
70