diff --git a/adapters/syslog/syslog.go b/adapters/syslog/syslog.go index 861748e4..508e008f 100644 --- a/adapters/syslog/syslog.go +++ b/adapters/syslog/syslog.go @@ -14,6 +14,8 @@ import ( "syscall" "text/template" "time" + "strings" + "regexp" "github.com/gliderlabs/logspout/cfg" "github.com/gliderlabs/logspout/router" @@ -21,6 +23,15 @@ import ( const defaultRetryCount = 10 +var funcs = template.FuncMap{ + "split": strings.Split, + "join": strings.Join, + "reSubmatch": func(pat string, str string) []string { + re := regexp.MustCompile(pat) + return re.FindStringSubmatch(str) + }, +} + var ( hostname string retryCount uint @@ -108,7 +119,7 @@ func NewSyslogAdapter(route *router.Route) (router.LogAdapter, error) { default: return nil, errors.New("unsupported syslog format: " + format) } - tmpl, err := template.New("syslog").Parse(tmplStr) + tmpl, err := template.New("syslog").Funcs(funcs).Parse(tmplStr) if err != nil { return nil, err }