---
-title: errorf
-linktitle: errorf
-description: Log ERROR and fail the build from the templates.
+title: errorf and warnf
+description: Log ERROR or WARNING from the templates.
date: 2017-09-30
publishdate: 2017-09-30
lastmod: 2017-09-30
aliases: []
---
-`errorf` will evaluate a format string, then output the result to the ERROR log (and only once per error message to avoid flooding the log).
+`errorf` or `warnf` will evaluate a format string, then output the result to the ERROR or WARNING log (and only once per error message to avoid flooding the log).
-This will also cause the build to fail (the `hugo` command will `exit -1`).
+Any ERROR will also cause the build to fail (the `hugo` command will `exit -1`).
+
+Note that the WARNING will only be printed to the console.
```
{{ errorf "Failed to handle page %q" .Path }}
```
-Note that `errorf` supports all the formatting verbs of the [fmt](https://golang.org/pkg/fmt/) package.
+```
+{{ warnf "You should update the shortcodes in %q" .Path }}
+```
+
+Note that `errorf` and `warnf` support all the formatting verbs of the [fmt](https://golang.org/pkg/fmt/) package.
"works!\n"
]
]
+ },
+ "Warnf": {
+ "Description": "Warnf formats according to a format specifier and logs a WARNING.\nIt returns an empty string.",
+ "Args": [
+ "format",
+ "a"
+ ],
+ "Aliases": [
+ "warnf"
+ ],
+ "Examples": [
+ [
+ "{{ warnf \"%s.\" \"warning\" }}",
+ ""
+ ]
+ ]
}
},
"hugo": {
// New returns a new instance of the fmt-namespaced template functions.
func New(d *deps.Deps) *Namespace {
- return &Namespace{helpers.NewDistinctLogger(d.Log.ERROR)}
+ return &Namespace{
+ errorLogger: helpers.NewDistinctLogger(d.Log.ERROR),
+ warnLogger: helpers.NewDistinctLogger(d.Log.WARN),
+ }
}
// Namespace provides template functions for the "fmt" namespace.
type Namespace struct {
errorLogger *helpers.DistinctLogger
+ warnLogger *helpers.DistinctLogger
}
// Print returns string representation of the passed arguments.
ns.errorLogger.Printf(format, a...)
return _fmt.Sprintf(format, a...)
}
+
+// Warnf formats according to a format specifier and logs a WARNING.
+// It returns an empty string.
+func (ns *Namespace) Warnf(format string, a ...interface{}) string {
+ ns.warnLogger.Printf(format, a...)
+ return ""
+}
},
)
+ ns.AddMethodMapping(ctx.Warnf,
+ []string{"warnf"},
+ [][2]string{
+ {`{{ warnf "%s." "warning" }}`, ``},
+ },
+ )
return ns
}