observer/pkg/exporters/gelf_exporter/config.go
2024-11-14 17:10:06 +01:00

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
}