github.com/dustinrc/deis@v1.10.1-0.20150917223407-0894a5fb979e/logger/drain/drain.go (about)

     1  package drain
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"net"
     7  	"net/url"
     8  	"os"
     9  )
    10  
    11  func SendToDrain(m string, drain string) error {
    12  	u, err := url.Parse(drain)
    13  	if err != nil {
    14  		log.Fatal(err)
    15  	}
    16  	uri := u.Host + u.Path
    17  	switch u.Scheme {
    18  	case "syslog":
    19  		sendToSyslogDrain(m, uri)
    20  	default:
    21  		log.Println(u.Scheme + " drain type is not implemented.")
    22  	}
    23  	return nil
    24  }
    25  
    26  func sendToSyslogDrain(m string, drain string) error {
    27  	conn, err := net.Dial("udp", drain)
    28  	if err != nil {
    29  		log.Print(err)
    30  	}
    31  	defer conn.Close()
    32  	fmt.Fprintf(conn, m)
    33  	return nil
    34  }
    35  
    36  func getopt(name, dfault string) string {
    37  	value := os.Getenv(name)
    38  	if value == "" {
    39  		value = dfault
    40  	}
    41  	return value
    42  }