func NewWriter()

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)
	}
}