Leonardo Di Donato 3a65c86da5 new(components/proxy/plugins): jsonselect log encoder plugin
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2021-07-26 18:26:30 +02:00

51 lines
1.0 KiB
Go

package jsonselect
import (
"strings"
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
)
func (e *JSONSelectEncoder) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
for d.Next() {
args := d.RemainingArgs()
switch len(args) {
case 0:
return d.Errf("%s (%T) requires an argument", moduleID, e)
default:
e.Selector = strings.Join(args, " ")
}
for n := d.Nesting(); d.NextBlock(n); {
subdir := d.Val()
var arg string
if !d.AllArgs(&arg) {
return d.ArgErr()
}
switch subdir {
case "message_key":
e.MessageKey = &arg
case "level_key":
e.LevelKey = &arg
case "time_key":
e.TimeKey = &arg
case "name_key":
e.NameKey = &arg
case "caller_key":
e.CallerKey = &arg
case "stacktrace_key":
e.StacktraceKey = &arg
case "line_ending":
e.LineEnding = &arg
case "time_format":
e.TimeFormat = arg
case "level_format":
e.LevelFormat = arg
default:
return d.Errf("unrecognized subdirective %s", subdir)
}
}
}
return nil
}