in spectator/writer/writer.go [89:130]
func NewWriter(outputLocation string, logger logger.Logger) (Writer, error) {
switch {
case outputLocation == "none":
logger.Infof("Initializing NoopWriter")
return &NoopWriter{}, nil
case outputLocation == "memory":
logger.Infof("Initializing MemoryWriter")
return &MemoryWriter{}, nil
case outputLocation == "stdout":
logger.Infof("Initializing StdoutWriter")
return &StdoutWriter{}, nil
case outputLocation == "stderr":
logger.Infof("Initializing StderrWriter")
return &StderrWriter{}, nil
case outputLocation == "udp":
// default udp port for spectatord
outputLocation = "udp://127.0.0.1:1234"
logger.Infof("Initializing UdpWriter with address %s", outputLocation)
address := strings.TrimPrefix(outputLocation, "udp://")
return NewUdpWriter(address, logger)
case outputLocation == "unix":
// default unix domain socket for spectatord
outputLocation = "unix:///run/spectatord/spectatord.unix"
logger.Infof("Initializing UnixgramWriter with path %s", outputLocation)
path := strings.TrimPrefix(outputLocation, "unix://")
return NewUnixgramWriter(path, logger)
case strings.HasPrefix(outputLocation, "file://"):
logger.Infof("Initializing FileWriter with path %s", outputLocation)
filePath := strings.TrimPrefix(outputLocation, "file://")
return NewFileWriter(filePath, logger)
case strings.HasPrefix(outputLocation, "udp://"):
logger.Infof("Initializing UdpWriter with address %s", outputLocation)
address := strings.TrimPrefix(outputLocation, "udp://")
return NewUdpWriter(address, logger)
case strings.HasPrefix(outputLocation, "unix://"):
logger.Infof("Initializing UnixgramWriter with path %s", outputLocation)
path := strings.TrimPrefix(outputLocation, "unix://")
return NewUnixgramWriter(path, logger)
default:
return nil, fmt.Errorf("unknown output location: %s", outputLocation)
}
}