Repository: gohugoio/hugo (language: go)

Issue:
Deprecation notices not printed to console when level = logg.LevelInfo
Works as expected with `logg.LevelWarn` and `logg.LevelError`.


https://github.com/gohugoio/hugo/blob/47bf2fcbe275c9259641ffcbc75df904fbe7a9c9/common/hugo/hugo.go#L364-L373


Discussion / hints:

Fix patch:
diff --git a/common/loggers/loggerglobal.go b/common/loggers/loggerglobal.go
index 92b2469ba9a..8b8e8cfc282 100644
--- a/common/loggers/loggerglobal.go
+++ b/common/loggers/loggerglobal.go
@@ -21,7 +21,7 @@ import (
 	"github.com/bep/logg"
 )
 
-func InitGlobalLogger(panicOnWarnings bool) {
+func InitGlobalLogger(level logg.Level, panicOnWarnings bool) {
 	logMu.Lock()
 	defer logMu.Unlock()
 	var logHookLast func(e *logg.Entry) error
@@ -31,6 +31,7 @@ func InitGlobalLogger(panicOnWarnings bool) {
 
 	log = New(
 		Options{
+			Level:       level,
 			Distinct:    true,
 			HandlerPost: logHookLast,
 		},
@@ -49,5 +50,5 @@ func Log() Logger {
 var log Logger
 
 func init() {
-	InitGlobalLogger(false)
+	InitGlobalLogger(logg.LevelWarn, false)
 }
diff --git a/config/allconfig/load.go b/config/allconfig/load.go
index 3af6147da6a..e7dae18066e 100644
--- a/config/allconfig/load.go
+++ b/config/allconfig/load.go
@@ -93,10 +93,10 @@ func LoadConfig(d ConfigSourceDescriptor) (*Configs, error) {
 
 	// This is unfortunate, but these are global settings.
 	tpl.SetSecurityAllowActionJSTmpl(configs.Base.Security.GoTemplates.AllowActionJSTmpl)
-	loggers.InitGlobalLogger(configs.Base.PanicOnWarning)
 
-	return configs, nil
+	loggers.InitGlobalLogger(d.Logger.Level(), configs.Base.PanicOnWarning)
 
+	return configs, nil
 }
 
 // ConfigSourceDescriptor describes where to find the config (e.g. config.toml etc.).
@@ -330,7 +330,6 @@ func (l *configLoader) envStringToVal(k, v string) any {
 	default:
 		return v
 	}
-
 }
 
 func (l *configLoader) loadConfigMain(d ConfigSourceDescriptor) (config.LoadConfigResult, modules.ModulesConfig, error) {
diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go
index 72b5fe7718c..a2b87b5e762 100644
--- a/hugolib/hugo_sites_build.go
+++ b/hugolib/hugo_sites_build.go
@@ -30,6 +30,7 @@ import (
 
 	"github.com/gohugoio/hugo/hugofs"
 
+	"github.com/gohugoio/hugo/common/loggers"
 	"github.com/gohugoio/hugo/common/para"
 	"github.com/gohugoio/hugo/config"
 	"github.com/gohugoio/hugo/resources/postpub"
@@ -172,7 +173,7 @@ func (h *HugoSites) Build(config BuildCfg, events ...fsnotify.Event) error {
 		return err
 	}
 
-	errorCount := h.Log.LoggCount(logg.LevelError)
+	errorCount := h.Log.LoggCount(logg.LevelError) + loggers.Log().LoggCount(logg.LevelError)
 	if errorCount > 0 {
 		return fmt.Errorf("logged %d error(s)", errorCount)
 	}
diff --git a/tpl/debug/debug.go b/tpl/debug/debug.go
index dd0593e2721..f603dd94d90 100644
--- a/tpl/debug/debug.go
+++ b/tpl/debug/debug.go
@@ -24,6 +24,7 @@ import (
 	"github.com/spf13/cast"
 	"github.com/yuin/goldmark/util"
 
+	"github.com/gohugoio/hugo/common/hugo"
 	"github.com/gohugoio/hugo/deps"
 )
 
@@ -156,3 +157,26 @@ func (t *timer) Stop() string {
 	// This is used in templates, we need to return something.
 	return ""
 }
+
+// Internal template func, used in tests only.
+func (ns *Namespace) TestDeprecationInfo(item, alternative string) string {
+	v := hugo.CurrentVersion
+	hugo.Deprecate(item, alternative, v.String())
+	return ""
+}
+
+// Internal template func, used in tests only.
+func (ns *Namespace) TestDeprecationWarn(item, alternative string) string {
+	v := hugo.CurrentVersion
+	v.Minor -= 6
+	hugo.Deprecate(item, alternative, v.String())
+	return ""
+}
+
+// Internal template func, used in tests only.
+func (ns *Namespace) TestDeprecationErr(item, alternative string) string {
+	v := hugo.CurrentVersion
+	v.Minor -= 12
+	hugo.Deprecate(item, alternative, v.String())
+	return ""
+}


Test patch:
diff --git a/testscripts/commands/deprecate.txt b/testscripts/commands/deprecate.txt
new file mode 100644
index 00000000000..b15d7ec841e
--- /dev/null
+++ b/testscripts/commands/deprecate.txt
@@ -0,0 +1,25 @@
+
+
+hugo -e info  --logLevel info
+stdout 'INFO  item was deprecated in Hugo'
+
+hugo -e warn  --logLevel warn
+stdout 'WARN  item was deprecated in Hugo'
+
+! hugo -e error  --logLevel warn
+stdout 'ERROR item was deprecated in Hugo'
+
+-- hugo.toml --
+baseURL = "https://example.com/"
+disableKinds = ["taxonomy", "term"]
+-- layouts/index.html --
+Deprecate:
+{{ if eq hugo.Environment "info" }}
+    {{ debug.TestDeprecationInfo "item" "alternative" }}
+{{ end }}
+{{ if eq hugo.Environment "warn" }}
+    {{ debug.TestDeprecationWarn "item" "alternative" }}
+{{ end }}
+{{ if eq hugo.Environment "error" }}
+    {{ debug.TestDeprecationErr "item" "alternative" }}
+{{ end }}
\ No newline at end of file