Skip to content

Commit 98b1b9f

Browse files
burgesQsagikazarmark
authored andcommitted
add:viper: allow to disable internal log messages
1 parent 2ee1631 commit 98b1b9f

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

viper.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ type Viper struct {
205205
automaticEnvApplied bool
206206
envKeyReplacer StringReplacer
207207
allowEmptyEnv bool
208+
logMessage bool
208209

209210
parents []string
210211
config map[string]interface{}
@@ -242,6 +243,7 @@ func New() *Viper {
242243
v.aliases = make(map[string]string)
243244
v.typeByDefValue = false
244245
v.logger = jwwLogger{}
246+
v.logMessage = true
245247

246248
v.resetEncoding()
247249

@@ -270,6 +272,14 @@ func KeyDelimiter(d string) Option {
270272
})
271273
}
272274

275+
// DisableMessageLog block any kind of messages to be logged.
276+
// By default, all messages are logged.
277+
func DisableMessageLog() Option {
278+
return optionFunc(func(v *Viper) {
279+
v.logMessage = false
280+
})
281+
}
282+
273283
// StringReplacer applies a set of replacements to a string.
274284
type StringReplacer interface {
275285
// Replace returns a copy of s with all replacements performed.
@@ -440,14 +450,16 @@ func (v *Viper) WatchConfig() {
440450
initWG.Add(1)
441451
go func() {
442452
watcher, err := newWatcher()
443-
if err != nil {
453+
if err != nil && v.logMessage {
444454
log.Fatal(err)
445455
}
446456
defer watcher.Close()
447457
// we have to watch the entire directory to pick up renames/atomic saves in a cross-platform way
448458
filename, err := v.getConfigFile()
449459
if err != nil {
450-
log.Printf("error: %v\n", err)
460+
if v.logMessage {
461+
log.Printf("error: %v\n", err)
462+
}
451463
initWG.Done()
452464
return
453465
}
@@ -475,7 +487,7 @@ func (v *Viper) WatchConfig() {
475487
(currentConfigFile != "" && currentConfigFile != realConfigFile) {
476488
realConfigFile = currentConfigFile
477489
err := v.ReadInConfig()
478-
if err != nil {
490+
if err != nil && v.logMessage {
479491
log.Printf("error reading config file: %v\n", err)
480492
}
481493
if v.onConfigChange != nil {
@@ -487,7 +499,7 @@ func (v *Viper) WatchConfig() {
487499
}
488500

489501
case err, ok := <-watcher.Errors:
490-
if ok { // 'Errors' channel is not closed
502+
if ok && v.logMessage { // 'Errors' channel is not closed
491503
log.Printf("watcher error: %v\n", err)
492504
}
493505
eventsWG.Done()

0 commit comments

Comments
 (0)