package gelfexporter type config struct { GelfUrl string } // newConfig creates a validated Config configured with options. func newConfig(options ...Option) (config, error) { cfg := config{} for _, opt := range options { cfg = opt.apply(cfg) } return cfg, nil } // Option sets the value of an option for a Config. type Option interface { apply(config) config } // WithWriter sets the export stream destination. // func WithWriter(w io.Writer) Option { // return writerOption{w} // } // type writerOption struct { // W *gelf.Writer // } // func (o writerOption) apply(cfg config) config { // cfg.Writer = o.W // return cfg // } func WithGelfUrl(url string) Option { return gelfUrlOption(url) } type gelfUrlOption string func (o gelfUrlOption) apply(cfg config) config { cfg.GelfUrl = string(o) return cfg } // // WithPrettyPrint prettifies the emitted output. // func WithPrettyPrint() Option { // return prettyPrintOption(true) // } // type prettyPrintOption bool // func (o prettyPrintOption) apply(cfg config) config { // cfg.PrettyPrint = bool(o) // return cfg // } // // WithoutTimestamps sets the export stream to not include timestamps. // func WithoutTimestamps() Option { // return timestampsOption(false) // } // type timestampsOption bool // func (o timestampsOption) apply(cfg config) config { // cfg.Timestamps = bool(o) // return cfg // }