@@ -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.
274284type 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