diff options
Diffstat (limited to 'core/setup/roller.go')
-rw-r--r-- | core/setup/roller.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/core/setup/roller.go b/core/setup/roller.go new file mode 100644 index 000000000..fd772cc47 --- /dev/null +++ b/core/setup/roller.go @@ -0,0 +1,40 @@ +package setup + +import ( + "strconv" + + "github.com/miekg/coredns/middleware" +) + +func parseRoller(c *Controller) (*middleware.LogRoller, error) { + var size, age, keep int + // This is kind of a hack to support nested blocks: + // As we are already in a block: either log or errors, + // c.nesting > 0 but, as soon as c meets a }, it thinks + // the block is over and return false for c.NextBlock. + for c.NextBlock() { + what := c.Val() + if !c.NextArg() { + return nil, c.ArgErr() + } + value := c.Val() + var err error + switch what { + case "size": + size, err = strconv.Atoi(value) + case "age": + age, err = strconv.Atoi(value) + case "keep": + keep, err = strconv.Atoi(value) + } + if err != nil { + return nil, err + } + } + return &middleware.LogRoller{ + MaxSize: size, + MaxAge: age, + MaxBackups: keep, + LocalTime: true, + }, nil +} |