aboutsummaryrefslogtreecommitdiff
path: root/core/setup/roller.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/setup/roller.go')
-rw-r--r--core/setup/roller.go40
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
+}