func splitAddress()

in internal/output/lumberjack/lumberjack.go [95:118]


func splitAddress(addr string) (scheme, host, port string, err error) {
	// Use tcp:// scheme by default if not specified.
	if !strings.Contains(addr, "://") {
		addr = "tcp://" + addr
	}

	url, err := url.Parse(addr)
	if err != nil {
		return "", "", "", fmt.Errorf("invalid address: %w", err)
	}

	// Require an explicit port in addresses.
	if url.Port() == "" {
		return "", "", "", errors.New("port number is required")
	}

	switch url.Scheme {
	case "tcp", "tls":
	default:
		return "", "", "", fmt.Errorf("invalid scheme %q (use tcp or tls)", url.Scheme)
	}

	return url.Scheme, url.Hostname(), url.Port(), nil
}