aboutsummaryrefslogtreecommitdiff
path: root/plugin/errors/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/errors/setup.go')
-rw-r--r--plugin/errors/setup.go31
1 files changed, 17 insertions, 14 deletions
diff --git a/plugin/errors/setup.go b/plugin/errors/setup.go
index 67a9fe653..c040e102f 100644
--- a/plugin/errors/setup.go
+++ b/plugin/errors/setup.go
@@ -52,38 +52,41 @@ func errorsParse(c *caddy.Controller) (*errorHandler, error) {
}
for c.NextBlock() {
- if err := parseBlock(c, handler); err != nil {
- return nil, err
+ switch c.Val() {
+ case "stacktrace":
+ dnsserver.GetConfig(c).Stacktrace = true
+ case "consolidate":
+ pattern, err := parseConsolidate(c)
+ if err != nil {
+ return nil, err
+ }
+ handler.patterns = append(handler.patterns, pattern)
+ default:
+ return handler, c.SyntaxErr("Unknown field " + c.Val())
}
}
}
return handler, nil
}
-func parseBlock(c *caddy.Controller, h *errorHandler) error {
- if c.Val() != "consolidate" {
- return c.SyntaxErr("consolidate")
- }
-
+func parseConsolidate(c *caddy.Controller) (*pattern, error) {
args := c.RemainingArgs()
if len(args) < 2 || len(args) > 3 {
- return c.ArgErr()
+ return nil, c.ArgErr()
}
p, err := time.ParseDuration(args[0])
if err != nil {
- return c.Err(err.Error())
+ return nil, c.Err(err.Error())
}
re, err := regexp.Compile(args[1])
if err != nil {
- return c.Err(err.Error())
+ return nil, c.Err(err.Error())
}
lc, err := parseLogLevel(c, args)
if err != nil {
- return err
+ return nil, err
}
- h.patterns = append(h.patterns, &pattern{period: p, pattern: re, logCallback: lc})
-
- return nil
+ return &pattern{period: p, pattern: re, logCallback: lc}, nil
}
func parseLogLevel(c *caddy.Controller, args []string) (func(format string, v ...interface{}), error) {