55 lines
909 B
Go
55 lines
909 B
Go
package gelfexporter
|
|
|
|
type config struct {
|
|
GelfUrl string
|
|
AppName string
|
|
Tag 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
|
|
}
|
|
|
|
func WithGelfUrl(url string) Option {
|
|
return gelfUrlOption(url)
|
|
}
|
|
|
|
type gelfUrlOption string
|
|
|
|
func (o gelfUrlOption) apply(cfg config) config {
|
|
cfg.GelfUrl = string(o)
|
|
return cfg
|
|
}
|
|
|
|
func WithAppName(url string) Option {
|
|
return appName(url)
|
|
}
|
|
|
|
type appName string
|
|
|
|
func (o appName) apply(cfg config) config {
|
|
cfg.AppName = string(o)
|
|
return cfg
|
|
}
|
|
|
|
func WithTag(tagStr string) Option {
|
|
return tag(tagStr)
|
|
}
|
|
|
|
type tag string
|
|
|
|
func (o tag) apply(cfg config) config {
|
|
cfg.Tag = string(o)
|
|
return cfg
|
|
}
|